2012-05-11 5 views
6

Chcę utworzyć tabelę z kolumn:Utwórz klucz obcy do tabel systemowych

IdRole 
IdProcedure 

chodzi o to, że IdProcedure jest FK do sys.objects.

Kiedy tworzę to zapytanie:

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

to działa dobrze, ale to jedno:

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

mówi mi:

klucz obcy referencje 'FK_SysProcedure' Nieprawidłowa tabela "sys.objects".

+8

'sys.objects' jest widokiem nie tabelą. Nie można jednak tworzyć FK do obiektów systemowych. –

+0

ok dzięki .. Nie byłem pewien, czy mógłbym to zrobić. – davibq

+6

Dlaczego chcesz to zrobić? Po pierwsze zapobiegałoby upuszczeniu/ponownemu utworzeniu, ponieważ nowy id_obiektu jest losowo przydzielany. Może mógłbyś nam powiedzieć, jaki problem próbujesz rozwiązać, zamiast powiedzieć nam, że chcesz go rozwiązać za pomocą obcego klucza do sys.objects. –

Odpowiedz

1

sys.objects nie jest stołem. Jest to widok systemu wspierany przez dane przechowywane w zastrzeżonym formacie programu SQL Server. Jeśli chcesz się upewnić, że zapisana nazwa jest prawidłowa, dodaj aktualizację i wstaw w celu obsłużenia sprawdzenia TRIGGER.