我检查了一个遗留数据库,发现了几个引用列自身的外键。引用的列是主键列。
ALTER TABLE [SchemaName].[TableName] WITH CHECK ADD
CONSTRAINT [FK_TableName_TableName] FOREIGN KEY([Id])
REFERENCES [SchemaName].[TableName] ([Id])
它有什么意义呢?
ALTER TABLE [SchemaName].[TableName] WITH CHECK ADD
CONSTRAINT [FK_TableName_TableName] FOREIGN KEY([Id])
REFERENCES [SchemaName].[TableName] ([Id])
这个外键完全是多余的,没有意义,删除它就可以了。当行匹配自身验证约束时,它永远不会被违反。
在分层表中,关系将存在于两个不同的列之间(例如Id
and ParentId
)
至于为什么它很可能是通过使用可视化设计器创建的,如果您右键单击对象资源管理器中的“键”节点并选择“新建外键”,然后关闭对话框而不删除创建的外键,然后创建一些打开表设计器中的其他更改并保存它会创建这种冗余约束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)