开发/数据库

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网 > 开发/数据库

在SQL Server中使用检查约束来验证数据

作者:代翀出处:IT专家网2009-05-07 14:58

  什么是检查约束?

  检查约束是一个规则,它确认一个SQL Server表中某条记录中的数据可接受的字段值。检查约束帮助执行域完整性。域完整性定义了一个数据库表中字段的有效值。检查约束可以验证一个单独字段或一些字段的域完整性。你对一个单独的字段可以有多个检查完整性。如果被插入或更新的数据违反了一个检查约束,那么数据库引擎将不允许这个插入或更新的操作发生。

  检查约束包括一个逻辑表达式,用以确认什么是有效的表达式。逻辑表达式可能是一个单独的表达式比如“Salary < 200000.00”,或多个表达式,比如“RentalDate > GETDATE() and RentalDate < DATEADD(YY,1,GETDATE())”。如果一个逻辑表达式的一个检查约束返回了FALSE值,那么这个检查约束将限制这个表中数据插入或更新。对于逻辑表达式返回的是FALSE以外的值的所有记录将通过这个检查约束并允许记录被更新或插入。为了这个记录能够被插入或更新,与给定INSERT或UPDATE语句相关的所有数据都不能进行检查约束失败(返回一个FALSE值)。检查约束可以在字段级别或表级别被创建。

  在一个CREATE TABLE语句上创建检查约束

  创建检查约束的一个方法是在表创建时进行。这是一个简单的CREATE TABLE脚本,它创建了一个单独的检查约束:

  

     CREATE TABLE dbo.Payroll

  (

  ID int PRIMARY KEY,

  PositionID INT,

  SalaryType nvarchar(10),

  Salary decimal(9,2)

  CHECK (Salary < 150000.00)

  );

  这里我有一个CHECK 子句,它与Salary字段关联。这是一个字段级别的约束。如果你创建一个字段级别的约束,那么你在你的检查约束的逻辑表达式中只能使用这个字段名称。这个检查约束只允许Salary字段低于$150,000.00。当我的表创建之后,这个CHECK约束也将被创建,并被赋予一个系统生成的约束名称。如果你想在一个CREATE TABLE操作期间命名你的检查约束,那么你可以运行下面的代码:

  

     CREATE TABLE dbo.Payroll

  (

  ID int PRIMARY KEY,

  PositionID INT,

  SalaryType nvarchar(10),

  Salary decimal(9,2)

  CONSTRAINT CK_Payroll_Salary CHECK (Salary < 150000.00)

  );

相关文章

关键词: 技巧,环球瞭望

责任编辑:包春林

网警备案