我已经解决了之前的这些问题Q1 https://stackoverflow.com/questions/15547210/modify-default-value-in-sql-server, Q2 https://stackoverflow.com/questions/20363386/altering-default-constraint-on-column-sql, Q3 https://stackoverflow.com/questions/43549413/alter-table-drop-column-failed-because-one-or-more-objects-access-this-column。使用这个我可以捕获我的确切约束名称。但这对我来说还不够。
例如我做了一些事情
ALTER TABLE dbo.Documents ADD ShowOnHandset BIT NOT NULL DEFAULT 'FALSE'
这里机器自动命名的我的常数是DF__Documents__ShowO__7AB2122C
在我的机器上。但我在多台 PC 上运行了相同的脚本,在这些 PC 上,除了最后一个哈希值之外,这些约束几乎相同。DF__Documents__ShowO__54A20B0D
DF__Documents__ShowO__5D5216D7
我发现最后8位的哈希值并不相似。但我需要从所有表中删除此约束,并且我想将它们替换为
ALTER TABLE dbo.Documents ADD ShowOnHandset BIT NOT NULL DEFAULT ((1))
但我无法识别确切的约束名称,那么如何使用单个脚本删除它呢?
我已经通过这些提到的问题找到了硬编码的解决方案。但我需要一个脚本来完成它。请帮我解决这个问题。
我可以使用此代码捕获约束名称
select name from sys.objects where name like 'DF__Documents__ShowO%'
我知道如何删除它。这里是。
ALTER TABLE dbo.AppSystems DROP constraint [constraint_name]
但我做不到。因为我无法输入值constraint_name
即使我能抓住它。那么我怎么能把这个名字放在这里呢?
Update修改了问题。