2012-05-11 3 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 для обновления и вставьте для обработки проверки.

Смежные вопросы