在SQL Server中添加检查约束:ADD CONSTRAINT与ADD CHECK

时间:2016-07-07 11:37:45

标签: sql-server sql-server-2008-r2 constraints check-constraints check-constraint

我想对SQL Server 2008中的任何表中的列使用检查约束。

我想为检查约束提供一个限定名称。

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

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

1 个答案:

答案 0 :(得分:3)

有可能,但非常糟糕的习惯添加没有名称的约束:

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

将创建一个随机名称的CONSTRAINT。更好地利用这个

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

这将做同样的事情,但会将约束命名为你想要的。

如果您在已部署的环境中运行升级脚本,则非常重要。试想一下,你想稍后更改一个约束,这个约束的名称在你的客户机器上都是不同的......真是太痛苦了!

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