考虑以下非常简单的外键约束:
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
您首先会注意到 上没有 PK [Person]
,只有一个唯一索引允许我创建对 . 的外键引用[Person].[id]
。
[INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS]
显示了我所期望的:将外键名称[FK_Order_Person]
与唯一约束名称链接的行[uindex]
。
所以我的问题是:强制INFORMATION_SCHEMA
在 SQL Server Compact 中使用,我从哪里获取索引的表和列信息[uindex]
?
[KEY_COLUMN_USAGE]
因为我没有主键,所以连接不会产生任何结果。
在此示例中,我可以加入[INFORMATION_SCHEMA].[INDEXES]
,但没有规则强制此名称在表或模式之间是唯一的,因此如果存在另一个具有相同名称的唯一键,那么我将无法确定该外键指向的位置。