【问题标题】:Add Check constraints in SQL Server: ADD CONSTRAINT vs ADD CHECK在 SQL Server 中添加检查约束:ADD CONSTRAINT 与 ADD CHECK
【发布时间】:2016-07-07 11:37:44
【问题描述】:

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

【问题讨论】:

  • 第二种语法允许你命名你的约束。第一个没有。命名约束是一种很好的做法。

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


【解决方案1】:

可以,但是非常不好的习惯添加没有名称的约束:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 2017-07-28
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多