为MS SQL表创建条件

时间:2014-03-12 08:02:26

标签: sql-server

我正在为食品行业应用数据库设计一个表格。 这是此数据库中表的代码:

 create table materialPriceAndStandard (
   id int identity(200,1), 
   materialName nvarchar(100) not null default (0),
   unitPrice decimal(19,2) not null default (0),
   carbohydrate float not null default (0),
   protein float not null default (0),
   fat float not null default (0),
   humidity float not null default (0),
   minerals float not null default (0),
   totalMinerals float not null
   constraint PK_id_materialPriceAndStandard primary key (id)
 );

materialPriceAndStandard表由一系列材料组成,每行的总量(minerlas的总和包括:碳水化合物....到minerlas)不应超过或小于100,是否有可能强制表抛出错误在插入时材料的总和大约是100?

2 个答案:

答案 0 :(得分:1)

我建议你看一下使用CHECK Constraints

  

CHECK约束通过限制值来强制域完整性   被一列或多列接受。您可以创建CHECK约束   使用任何返回TRUE或FALSE的逻辑(布尔)表达式   关于逻辑运算符。例如,a的值范围   可以通过创建CHECK约束来限制salary列   仅允许从15,000美元到100,000美元的数据。这个   防止工资超出正常工资范围。   逻辑表达式如下:salary> = 15000 AND   工资< = 100000。

以此为例

CREATE TABLE FOO(
  Col1 FLOAT,
  Col2 FLOAT,
  CONSTRAINT BAR CHECK (Col1 + Col2 = 100)
)
GO

INSERT INTO FOO VALUES (1,99)
GO

--this will fail
INSERT INTO FOO VALUES (1,100)
GO

DROP TABLE FOO
GO

答案 1 :(得分:1)

您需要创建一个表级CHECK约束,请检查以下链接: SO