在 SQL 服务器中添加检查约束:ADD CONSTRAINT 与 ADD CHECK

Add Check constraints in SQL Server: ADD CONSTRAINT vs ADD CHECK

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

我想为检查约束指定一个合格的名称。

我看过几个关于如何创建它的语法版本:

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 有什么区别?

可以,但是一个非常坏的习惯添加没有名字的约束:

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

将创建一个具有随机名称的 CONSTRAINT。最好用这个

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

这会做同样的事情,但会按照您想要的方式命名约束。

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

所以:始终为您的约束命名!