Mad*_*Boy 10 sql sql-server-2008 sql-server-2008-r2
我在SQL Server 2008 R2中有一个表,ID其中调用了主键,然后由数据库周围的多个表用作外键.如何找出使用哪个表?我正在尝试删除该记录,但它正在抱怨ID正在使用中.
或者也许有一种简单的方法可以通过提供数据库来从整个数据库中删除所有引用的记录ID?现在我要为每个表(我知道该ID作为外键)并删除与该特定ID对应的记录但是如果有更好/更简单的方法来查找它并使用简单代码一次删除所有那么最好的主意.
Pau*_*lor 16
MS SQL能够描述自己.特别是,有一系列以INFORMATION_SCHEMA开头的视图.
要了解您的领域的使用位置,请尝试: -
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Run Code Online (Sandbox Code Playgroud)
查看表sysobjects和sysforeignkeys,您可以获得所有引用您的表的外键。
试试这个未经测试的声明:
select a.name as ConstraintName, f.name as FromTable, t.name as ToTable
from sysobjects a, sysobjects f, sysobjects t, sysforeignkeys b
where a.id=b.constid and f.id=b.fkeyid and t.id=b.rkeyid and t.name= 'Yourtable'
Run Code Online (Sandbox Code Playgroud)
select constraintColumns.* from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as constraintColumns
inner join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS as constraints on constraintColumns.CONSTRAINT_NAME = constraints.CONSTRAINT_NAME
inner join INFORMATION_SCHEMA.KEY_COLUMN_USAGE as keys on constraints.UNIQUE_CONSTRAINT_NAME = keys.CONSTRAINT_NAME
where keys.TABLE_NAME = 'yourTableWithThePrimaryKeyColumn';
Run Code Online (Sandbox Code Playgroud)