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
相关产品推荐
相关产品推荐

