在创建表时命名约束

时间:2014-12-19 03:39:09

标签: sql constraints create-table

我在系统中看到以下SQL:

create table Account
(
    [AccountId] int not null,
    [EquityStatus] int not null constraint DF_Account_EquityStatus default(1),
    [DerivativeStatus] int not null constraint DF_Account_DerivativeStatus default(1),
    [HasSecurityAgreement] tinyint not null constraint DF_Account_HasSecurityAgreement default(0),
    ...
)

为什么它几乎每列都列出了每个约束?这样做有什么好处吗?

1 个答案:

答案 0 :(得分:0)

您可以让系统为您的约束分配一个系统生成的名称,但是从维护的角度来看,如果您想稍后更改或删除约束,您将变得非常困难 - 您通常必须按名称执行此类操作如果您让系统自动生成名称,您将无法知道要使用的正确名称。

此外,如果脚本是您的主要部署方式,并且您有多个环境(例如开发,登台,测试等),那么系统生成的名称将在每个环境中有所不同,这使得如果您想比较它会更加困难建立当前差异的两种环境。