gpt4 book ai didi

sql-server - SQL CONSTRAINT 不同的名称

转载 作者:行者123 更新时间:2023-12-01 06:05:15 25 4
gpt4 key购买 nike

我有两个具有完全相同表的数据库,但它们在 CONSTRAINT 方面有所不同。看看下面的图片了解详情。

enter image description here

如您所见,SRO_VT_SHARD_188_RefObjChar 有约束但是 SRO_VT_SHARD_D9没有。

我已删除表 _RefObjCharSRO_VT_SHARD_D9并使用充满约束的查询重新创建它,但我收到此错误:

There is already an object named 'DF__RefObjChar_Resist27' in the database.



我知道是否将 CONSTRAINT 的名称更改为 DF__RefObjChar_Resist27AAA ,我的查询可以正常运行,但我想知道如果我这样做,是否会导致任何查询错误或由于旧的 CONSTRAINT 名称已更改而无法正常工作?

最佳答案

正如评论中所指出的,约束是数据库范围的。您甚至不知道所讨论的约束是否在此特定表上定义。运行以下(或类似的)查询以找出使用约束的位置。最好以声明方式命名约束,也如注释中所述,而不是让它们由系统或工具命名。我倾向于<schema>__<object>__<column>__<type> .所以这将是 [dbo__SRO_VT_SHAD_DN__df]。现在您的约束名称清楚地表明它的使用地点和方式。请注意,我使用双下划线来分隔架构、对象、列、类型,因为名称中经常使用单个下划线。您可以使用不同的表示法。重点是使命名尽可能明显。是 [address_state_city_type_df] 模式 [address_state] 和表 [city] 列类型,或模式 [address]、表 [state_city] 等。

select [default_constraints].[name]
, [objects].[name]
, [objects].[type_desc]
, [columns].[name]
from [sys].[default_constraints] as [default_constraints]
join [sys].[objects] as [objects]
on [objects].[object_id] = [default_constraints].[parent_object_id]
join [sys].[columns] as [columns]
on [columns].[column_id] = [default_constraints].[parent_column_id]
where [default_constraints].[name] = N'DF__RefObjChar_Resist27';

关于sql-server - SQL CONSTRAINT 不同的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40945328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com