从数据库中删除行时,我正在执行查询以避免违反约束。我尽可能使用 ON DELETE CASCADE
选项,但有时我不想允许执行删除。
例如:
案件:
没有任何 ON DELETE CASCADE 选项。
ON DELETE CASCADE 选项。
下面的查询将列出引用 DEPT 表的两个表(CUSTOMER 和 AREA):
SELECT *
FROM sys.foreign_key_columns fkc
JOIN sys.columns col ON
fkc.parent_object_id = col.object_id
AND fkc.parent_column_id = col.column_id
WHERE object_name(referenced_object_id) = 'DEPT'
但是我只想在我的查询中显示具有外键的表 没有
ON DELETE CASCADE
选项,在上面的例子中只是表 CUSTOMER。有任何想法吗?
最佳答案
select ao.name,ao.type_desc,delete_referential_action_desc,*
from sys.foreign_keys fk
inner join sys.all_objects ao
on fk.parent_object_id = ao.object_id
where delete_referential_action_desc <> 'CASCADE'
关于sql - 如何使用 "ON DELETE CASCADE"选项检查外部列是否是约束的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14382645/