【问题标题】:Create a foreign key to system tables为系统表创建外键
【发布时间】:2012-05-20 12:21:06
【问题描述】:

我想用 to 列创建表:

IdRole
IdProcedure

这个想法是 IdProcedure 是 sys.objects 的 FK。

当我创建这个查询时:

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'。

【问题讨论】:

  • sys.objects 是视图而不是表格。无论如何,您都无法为系统对象创建 FK。
  • 好的,谢谢.. 我不确定我能不能做到..
  • 您为什么要这样做?一方面,它会阻止删除/重新创建,因为随机分配了一个新的 object_id。也许您可以告诉我们您要解决什么问题,而不是告诉我们您想使用 sys.objects 的外键来解决它。
  • 如果你要添加这个引用,我建议级联删除,这样当一个对象从 sys.objects 中删除时,你就不会全部挂断,其中有一个子记录你的用户表。

标签: sql-server foreign-keys sysobjects


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多