2012-05-11 10 views
6

Ich möchte Tabelle erstellen, mit Spalten:einen Fremdschlüssel zu Systemtabellen

IdRole 
IdProcedure 

die Idee ist, dass IdProcedure ist ein FK zu sys.objects.

Wenn ich erstellen, um diese Abfrage:

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

es funktioniert gut, aber diese:

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

sagt mir:

Fremdschlüssel 'FK_SysProcedure' verweist auf die ungültige Tabelle 'sys.objects'.

+8

'sys.objects' ist eine Ansicht, keine Tabelle. Sie können trotzdem keine FKs für Systemobjekte anlegen. –

+0

ok danke .. Ich war mir nicht sicher, ob ich es könnte .. – davibq

+6

Warum sollten Sie das tun? Zum einen würde es Drop/Re-Create verhindern, da eine neue Objekt-ID zufällig zugewiesen wird. Vielleicht könnten Sie uns sagen, welches Problem Sie lösen möchten, anstatt uns mitzuteilen, dass Sie es mit einem Fremdschlüssel für sys.objects lösen wollen. –

Antwort

1

sys.objects ist keine Tabelle. Es ist eine Systemansicht, die von Daten unterstützt wird, die im proprietären SQL Server-Format gespeichert sind. Wenn Sie sicherstellen möchten, dass der gespeicherte Name korrekt ist, fügen Sie ein TRIGGER für das Update hinzu und fügen Sie es ein, um die Prüfung durchzuführen.