【发布时间】:2013-06-08 20:07:09
【问题描述】:
有没有办法检查表是否打开了级联删除?我正在查看表的脚本(来自 SQL Server),但没有看到任何级联删除的迹象。
【问题讨论】:
-
Tables 本身并没有开启级联删除。外键约束。
标签: sql sql-server
有没有办法检查表是否打开了级联删除?我正在查看表的脚本(来自 SQL Server),但没有看到任何级联删除的迹象。
【问题讨论】:
标签: sql sql-server
您可以将 INFORMATION_SCHEMA 用于标准方法,例如
select * from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
where DELETE_RULE ='CASCADE'
【讨论】:
外键关系请使用sys.foreign_keys。
该列 - delete_referential_action 可帮助您了解级联是否存在删除。
http://technet.microsoft.com/en-us/library/ms189807.aspx
下面查看类似作品的帮助:
sys.default_constraints for default constraints on columns
sys.check_constraints for check constraints on columns
sys.key_constraints for key constraints (e.g. primary keys)
sys.foreign_keys for foreign key relations
【讨论】:
我找到了如何做到这一点:
我将表格上的 FK 编写到一个新的查询窗口:
ALTER TABLE [dbo].[myTable] WITH CHECK ADD CONSTRAINT [FK_myTable_myTableHeaders] FOREIGN KEY([ID])
REFERENCES [dbo].[myTableHeaders] ([_ID])
ON DELETE CASCADE
GO
这就是我能够确认的方式。
【讨论】: