删除具有约束的表中的对象

时间:2017-03-20 20:47:37

标签: sql sql-server

我有一个包含几个约束的表,没有on cascade delete属性。

因此,如果我尝试通过id删除和对象,我会收到以下错误:

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS

问题在于,如果我运行删除,我会在一时间获得有关一个​​约束的错误,是否有办法获得所有带有命令约束的表?

通过这种方式,我可以生成一个查询,删除父节点之前约束的对象。

1 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,你想知道如何找到引用你的表的外键 - 嗯,这应该让你开始:

DECLARE @YourTableName sysname = '<Your table name goes here>'

SELECT  OBJECT_NAME(f.parent_object_id) As ParentTable, 
        OBJECT_NAME(f.referenced_object_id) As ReferencedTable, 
        c1.name As ParentColumnName, 
        c2.name As ReferencedColumnName
FROM sys.foreign_key_columns f
INNER JOIN sys.all_columns c1
ON f.parent_object_id = c1.object_id and f.parent_column_id = c1.column_id 
INNER JOIN sys.all_columns c2
ON f.referenced_object_id = c2.object_id and f.referenced_column_id = c2.column_id 
WHERE OBJECT_NAME(f.referenced_object_id) = @YourTableName