某天发完版本,日本那过来紧急邮件,作成安装文件时SQL执行失败
按照安装文件中SQL文件执行顺序,执行到如下部分时,提示约束已存在

CREATE TABLE [dbo].[TTL_TOTALONLINEDISCOUNT](
--......
[iDiscountAmount] [int] NOT NULL CONSTRAINT [DF__TTL_TOTAL__iDisc__77FFC2B3] DEFAULT ((0)),
--......
)

反复检查了几个SQL文件中所有语句,反复确认文件中有且只有一个名为[DF__TTL_TOTAL__iDisc__77FFC2B3]的约束。百思不得其解。后来执行到此创建表语句的前一段语句,查询系统视图default_constraints,果然发现已存在名为[DF__TTL_TOTAL__iDisc__77FFC2B3]的约束,有点纳闷。
仔细推敲后,大概估摸出出错的原因。平时写SQL语句并不会指定约束名,约束名是系统自动生成的,且最后面的77FFC2B3为系统为了防止约束名重复生成的后缀字符串。本次项目对应中,在另外一个SQL文件的一个语句中增加了两个字段,现存的SQL语句中建立表的地方有部分没有指定约束名,导致生成的约束名重复。删除全部约束名改为自动生成,问题解决。

Back