1

我想在任何表使用检查约束列在SQL Server 2008中添加CHECK约束在SQL Server:添加约束VS添加复

我想给一个合格的名称来检查约束。

我已经看到了如何创建它的几个语法版本:

ALTER TABLE [dbo].[Roles2016.UsersCRM] WITH CHECK 
    ADD CHECK (([Estado]=(4) OR [Estado]=(3) OR [Estado]=(2) OR [Estado]=(1))) 

ALTER TABLE [dbo].[Roles2016.UsersCRM] WITH CHECK 
    ADD CONSTRAINT [CK_UsuariosCRM_Estado] 
     CHECK (([Estado]=(4) OR [Estado]=(3) OR [Estado]=(2) OR [Estado]=(1))) 

什么是用于检查约束差异ADD CHECKADD CONSTRAINT

+5

第二种语法允许您为约束命名。第一个没有。命名限制是个好习惯。 –

回答

3

这是可能的,但非常不好的习惯到没有名字添加约束:

CREATE TABLE tbl(SomeColumn VARCHAR(10) DEFAULT('test')) 

将创建一个CONSTRAINT以任意名称。最好使用这个

CREATE TABLE tbl(SomeColumn VARCHAR(10) CONSTRAINT DF_YourTable_SomeColumm DEFAULT('test')) 

这样做也是一样,但会按照您的要求命名约束条件。

这是极其重要如果您在部署的环境中运行升级脚本。想象一下,你想稍后改变一个约束,这个约束的名称在你的客户机器上是完全不同的......这真是一种痛苦!

所以:总是命名你的约束!