【发布时间】:2017-04-18 03:19:41
【问题描述】:
我有两个具有完全相同表的数据库,但它们在约束方面有所不同。详情请看下图。
如您所见,SRO_VT_SHARD_188 对 _RefObjChar 有一个约束,但 SRO_VT_SHARD_D9 没有。
我在SRO_VT_SHARD_D9 中删除了表_RefObjChar 并用一个充满约束的查询重新创建了它,但我收到了这个错误:
数据库中已经有一个名为“DF__RefObjChar_Resist27”的对象。
我知道如果我将 CONSTRAINT 的名称更改为 DF__RefObjChar_Resist27AAA,我的查询可以正常运行,但我想知道如果我这样做,是否会导致任何查询错误或由于旧的 CONSTRAINT 名称已更改而无法正常工作?
【问题讨论】:
-
约束名称是数据库范围的。或架构范围。或类似的东西;无论如何都不同于索引名称。
DF_TableName_ColumnName你会没事的——就像外键一样:FK_ForeignTable_PrimaryTable. -
但是如果我改成
DF_TableName_ColumnName_SomeString这样的名字也可以吗? -
如果您更改约束的名称,您的查询应该不会有任何问题(我认为您需要删除并重新创建它)。除非您有某种查询会在正常操作中改变数据模型的结构,这会触及这些约束(极不可能,我不知道为什么应该有)。