我想对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 CHECK
和ADD CONSTRAINT
?
答案 0 :(得分:3)
有可能,但非常糟糕的习惯添加没有名称的约束:
CREATE TABLE tbl(SomeColumn VARCHAR(10) DEFAULT('test'))
将创建一个随机名称的CONSTRAINT
。更好地利用这个
CREATE TABLE tbl(SomeColumn VARCHAR(10) CONSTRAINT DF_YourTable_SomeColumm DEFAULT('test'))
这将做同样的事情,但会将约束命名为你想要的。
如果您在已部署的环境中运行升级脚本,则非常重要。试想一下,你想稍后更改一个约束,这个约束的名称在你的客户机器上都是不同的......真是太痛苦了!
所以:总是命名你的约束!