次の非常に単純な外部キー制約について考えてみます。
CREATE TABLE [Person]([id] uniqueidentifier NOT NULL, [name] nvarchar(400) NULL)
GO
CREATE TABLE [Order]([id] uniqueidentifier NOT NULL, [pid] uniqueidentifier NOT NULL)
GO
/****** Index: [uindex] ******/
CREATE UNIQUE INDEX [uindex] on [Person] ([id])
GO
/****** ForeignKey: [FK_Order_Person] ******/
ALTER TABLE [Order] ADD CONSTRAINT [FK_Order_Person] FOREIGN KEY([pid])
REFERENCES [Person] ([id])
GO
[Person]
最初に、にPKがなく、への外部キー参照を作成できる一意のインデックスのみがあることに気付くでしょう[Person].[id]
。
[INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS]
は、私が期待することを示しています。外部キー名[FK_Order_Person]
と一意性制約名をリンクする行[uindex]
です。
だから私の質問は:INFORMATION_SCHEMA
SQL Server Compactで使用することを余儀なくされていますが、インデックスのテーブルと列の情報はどこで入手できます[uindex]
か?
主キーがないため、結合して[KEY_COLUMN_USAGE]
も何も生成されません。
この例では、に参加でき[INFORMATION_SCHEMA].[INDEXES]
ますが、この名前がテーブルまたはスキーマ間で一意になるように強制するルールはないため、同じ名前で別の一意のキーが存在する場合、この外部キーがどこを指しているのかを特定できません。