sql serverは、テーブルの外部キー参照をクエリーします(外部キーを結合します)
1975 ワード
まずプライマリ・テーブルを作成します.
スレーブテーブルをもう1つ作成するには、次の手順に従います.
ポイントデータを作成するには、実はここでも使えませんが、着信データのほうがいいので、外部キーの参照関係を理解するのに役立ちます.
テーブルの外部キー参照をクエリーする(外部キーを結合する)sqlは、次のようになります.
「結合外部キー」の場合、外部キーはすべて外部キー名があり、統一外部キー名には複数のレコードがあります(いくつかのcolumnsが結合外部キーを構成し、いくつかのレコードがあります!):
CREATE TABLE
dbo.TestMain
(
col1 bigint,
col2 bigint,
col3 bigint,
PRIMARY KEY (col1, col2) --
)
スレーブテーブルをもう1つ作成するには、次の手順に従います.
CREATE TABLE
AccountsData.dbo.TestSlave
(
s1 bigint ,
s2 bigint ,
s3 bigint ,
s4 bigint ,
PRIMARY KEY (s1), --
CONSTRAINT TestSlave_fk1 FOREIGN KEY (s2, s3) REFERENCES AccountsData.dbo.TestMain (col1, col2) -- ( , , )
)
ポイントデータを作成するには、実はここでも使えませんが、着信データのほうがいいので、外部キーの参照関係を理解するのに役立ちます.
insert TestMain (col1,col2,col3)
select 1,1,0 union
select 1,2,0 union
select 1,3,0 union
select 2,2,0
insert TestSlave (s1,s2,s3,s4)
select 1,1,1,0 union
select 2,1,2,0 union
select 3,1,3,0 union
select 4,2,2,0
select * from TestMain
select * from TestSlave
テーブルの外部キー参照をクエリーする(外部キーを結合する)sqlは、次のようになります.
SELECT
fk.name fkname ,
ftable.name ftablename,
fcn.name fkcol ,
rtable.name ftablename,
rcn.name rkcol
FROM
sysforeignkeys
JOIN
sysobjects fk ON sysforeignkeys.constid = fk.id
JOIN
sysobjects ftable ON sysforeignkeys.fkeyid = ftable.id
JOIN
sysobjects rtable ON sysforeignkeys.rkeyid = rtable.id
JOIN
syscolumns fcn ON sysforeignkeys.fkeyid = fcn.id AND sysforeignkeys.fkey = fcn.colid
JOIN
syscolumns rcn ON sysforeignkeys.rkeyid = rcn.id AND sysforeignkeys.rkey = rcn.colid
WHERE
ftable.id = Object_ID('TestSlave') --table name
「結合外部キー」の場合、外部キーはすべて外部キー名があり、統一外部キー名には複数のレコードがあります(いくつかのcolumnsが結合外部キーを構成し、いくつかのレコードがあります!):
fkname ftablename fkcol ftablename rkcol
------------- ---------- ----- ---------- -----
TestSlave_fk1 TestSlave s2 TestMain col1
TestSlave_fk1 TestSlave s3 TestMain col2