考虑以下非常简单的外键约束:
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],但没有规则强制此名称在表或模式之间是唯一的,因此如果存在另一个具有相同名称的唯一键,那么我将无法确定该外键指向的位置。