select
'Table is referenced by foreign key' =
db_name() + '.'
+ rtrim(user_name(ObjectProperty(fkeyid,'ownerid')))
+ '.' + object_name(fkeyid)
+ ': ' + object_name(constid)
from sysreferences where rkeyid = object_id('T1') order by 1
'Table is referenced by foreign key' =
db_name() + '.'
+ rtrim(user_name(ObjectProperty(fkeyid,'ownerid')))
+ '.' + object_name(fkeyid)
+ ': ' + object_name(constid)
from sysreferences where rkeyid = object_id('T1') order by 1
,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
,外键表ID=b.fkeyid
,外键表名称=object_name(b.fkeyid)
,外键列ID=b.fkey
,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade')
,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade')
FROM sysobjects a
join sysforeignkeys b on a.id=b.constid
join sysobjects c on a.parent_obj=c.id
where a.xtype='f' AND c.xtype='U'
and object_name(b.rkeyid)='titles'
CREATE TABLE T1 (
[A] [int] CONSTRAINT [Pri_A] PRIMARY KEY,
[Col1] [varchar] (12)) GO
--------------------------
Create table T2(Col2 varchar(12) primary key,B int Constraint for_A foreign key
references T1(A) on update Cascade )
--------------------------------
T1表
列名 A Col1
11 A
22 B
33 C
44 DT2表
Col2 B
AA, 11--------------问题是怎么判断这个引用了11这个值.
当我们删除T1表中的11时,这时就报错。
问题就是要判断这个主键列A中的11被引用了还有T3,T4,T5都不详,因为小弟菜边开发边建表.
delete from T2 where A = '11'
else
raiserror('...', 16, 1)
delete from T1 where A = '11'
else
raiserror('...', 16, 1)