在 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 CHECK
和 ADD CONSTRAINT
有什么区别?
可以,但是一个非常坏的习惯添加没有名字的约束:
CREATE TABLE tbl(SomeColumn VARCHAR(10) DEFAULT('test'))
将创建一个具有随机名称的 CONSTRAINT
。最好用这个
CREATE TABLE tbl(SomeColumn VARCHAR(10) CONSTRAINT DF_YourTable_SomeColumm DEFAULT('test'))
这会做同样的事情,但会按照您想要的方式命名约束。
如果您运行在已部署环境中升级脚本,这极其重要。试想一下,您想稍后更改一个约束,而这个约束的名称在您的客户机器上完全不同......这真是痛苦!
所以:始终为您的约束命名!
我想对 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 CHECK
和 ADD CONSTRAINT
有什么区别?
可以,但是一个非常坏的习惯添加没有名字的约束:
CREATE TABLE tbl(SomeColumn VARCHAR(10) DEFAULT('test'))
将创建一个具有随机名称的 CONSTRAINT
。最好用这个
CREATE TABLE tbl(SomeColumn VARCHAR(10) CONSTRAINT DF_YourTable_SomeColumm DEFAULT('test'))
这会做同样的事情,但会按照您想要的方式命名约束。
如果您运行在已部署环境中升级脚本,这极其重要。试想一下,您想稍后更改一个约束,而这个约束的名称在您的客户机器上完全不同......这真是痛苦!
所以:始终为您的约束命名!