2012-05-11 87 views
6

我想创建表的列:创建一个外键系统表

IdRole 
IdProcedure 

的想法是,IdProcedure是一个FK到sys.objects

当我创建此查询:

SELECT * 
FROM sys.objects 
WHERE type='p' 

它工作正常,但是这一个:

ALTER TABLE dbo.CORE_ProcedureXRole 
ADD CONSTRAINT FK_SysProcedure 
FOREIGN KEY (IdProcedure) 
REFERENCES sys.objects(object_id) 

告诉我:

外键 'FK_SysProcedure' 引用了无效的表 'sys.objects中'。

+8

'sys.objects'是一个视图不是表格。无论如何你都不能创建FK到系统对象。 –

+0

好的谢谢..我不知道我是否可以做到这一点.. – davibq

+6

你为什么要这样做?对于一个它会防止丢弃/重新创建,因为一个新的object_id被随机分配。也许你可以告诉我们你想要解决什么问题,而不是告诉我们你想用sys.objects的外键来解决它。 –

回答

1

sys.objects不是表格。这是一个系统视图,以专有SQL Server格式存储的数据支持。如果您想确保存储的名称是正确的,请添加TRIGGER进行更新并插入以处理检查。