寻找外键
一个数据库表 MeetingRoomApply 里面有 ApplyID,RoomID,BeginDate,EndDate,ApplyDate,AdminEmpID 这些字段,主键是:ApplyID 外键有:RoomID,AdminEmpID 我想找到外键:AdminEmpID 所在的表 怎么可以办到??
[解决办法]
SYSFOREIGNKEY 系统表中有相关信息。
[解决办法]
列名 列类型 列约束 表约束
foreign_table_id UNSIGNED INT NOT NULL 主键,外键引用 SYSTABLE.table_id。唯一索引
foreign_key_id SMALLINT NOT NULL 主键
primary_table_id UNSIGNED INT NOT NULL 外键引用 SYSTABLE.table_id
这种东西,参考一下手册中的说明就行了。另外通过这个表,你需要通过ID到其它表中得到表名。
[解决办法]
declare @PkTableName as nvarchar(256)
declare @PkFieldName as nvarchar(256)
set @PkTableName='MeetingRoomApply '
set @PkFieldName='AdminEmpID'
select
'PkTable'=@PkTableName,
'PkField'=@PkFieldName,
'FkTable'=object_name(sysforeignkeys.fkeyid),
'FkField'=fkCol.[name]
from sysforeignkeys,syscolumns as fkCol,syscolumns as pkCol
where
sysforeignkeys.fkeyid=fkCol.[id]
and fkCol.colid=sysforeignkeys.fkey
and object_name(sysforeignkeys.rkeyid)=@PkTableName
and sysforeignkeys.rkey=pkCol.colid --列'Pkid'在表'Company'中的位置
and object_name(pkCol.[id])=@PkTableName and pkCol.[name]=@PkFieldName