【问题标题】:Cascade Delete turned on?级联删除打开了吗?
【发布时间】:2013-06-08 20:07:09
【问题描述】:

有没有办法检查表是否打开了级联删除?我正在查看表的脚本(来自 SQL Server),但没有看到任何级联删除的迹象。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

您可以将 INFORMATION_SCHEMA 用于标准方法,例如

select * from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
where DELETE_RULE ='CASCADE'

【讨论】:

    【解决方案2】:

    外键关系请使用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
    

    来源:SQL Server 2008- Get table constraints

    【讨论】:

    • 感谢您的回答。这比我的解决方案更快更容易。你知道如何在具有 delete_referential_action = 0 和 delete_referential_action_desc = 'NO_ACTION' 的 FK 上打开级联删除
    【解决方案3】:

    我找到了如何做到这一点:

    我将表格上的 FK 编写到一个新的查询窗口:

    ALTER TABLE [dbo].[myTable]  WITH CHECK ADD  CONSTRAINT [FK_myTable_myTableHeaders] FOREIGN KEY([ID])
    REFERENCES [dbo].[myTableHeaders] ([_ID])
    ON DELETE CASCADE
    GO
    

    这就是我能够确认的方式。

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2011-06-29
      • 2010-10-05
      • 2011-09-21
      • 2012-02-27
      • 2012-09-08
      相关资源
      最近更新 更多