You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server创建表时如何设置decimal类型字段禁止存入0值

实现方法

要限制decimal类型的Precio_Unitario字段不能为0,直接给字段加CHECK约束即可,分为两种场景操作:

场景1:还未建表,直接修改建表语句

直接在Precio_Unitario字段定义后加CHECK规则,完整建表语句如下:

CREATE TABLE Producto
(
    Idproducto [int] PRIMARY KEY NOT NULL 
        DEFAULT (NEXT VALUE FOR Idprod),
    Nombre [varchar](100) NOT NULL,
    Precio_Unitario DECIMAL (18,2) NOT NULL
        CHECK (Precio_Unitario > 0)
);

说明:

  • 如果你允许该字段为空、只是不能为0,去掉NOT NULL即可,NULL值不会触发CHECK约束报错
  • 如果业务允许负数、仅禁止0值,把约束条件改为CHECK (Precio_Unitario <> 0)即可

场景2:表已经建好,额外追加约束

执行ALTER TABLE语句添加约束即可:

ALTER TABLE Producto
ADD CONSTRAINT CHK_Producto_PrecioUnitario_NoZero
CHECK (Precio_Unitario > 0);

注意:

  • 加约束前需要先清理表中已存在的不符合规则的0值/负数数据,否则约束会添加失败
  • 约束名CHK_Producto_PrecioUnitario_NoZero可以自定义,建议统一命名规范方便后续维护

内容的提问来源于stack exchange,提问作者douglas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:36:03