1

我想对 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检查约束?

4

1 回答 1

3

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

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

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

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

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

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

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

于 2016-07-07T11:44:07.717 回答