2012-05-11 7 views
6

voglio creare tabella con le colonne a:Creare una chiave esterna per le tabelle di sistema

IdRole 
IdProcedure 

l'idea è che IdProcedure è un FK a sys.objects.

Quando creo questa query:

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

funziona benissimo, ma questo:

chiave esterna riferimenti 'FK_SysProcedure' tavolo valida :

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

mi dice 'sys.objects'.

+8

'sys.objects' è una vista non una tabella. Non è possibile creare FK sugli oggetti di sistema in ogni caso. –

+0

ok grazie .. Non ero sicuro di poterlo fare .. – davibq

+6

Perché vuoi farlo? Per uno eviterebbe la caduta/ricreazione poiché un nuovo object_id viene assegnato in modo casuale. Forse potresti dirci quale problema stai cercando di risolvere invece di dirci che vuoi risolverlo con una chiave straniera per sys.objects. –

risposta

1

sys.objects non è un tavolo. È una vista di sistema supportata da dati archiviati nel formato proprietario di SQL Server. Se si desidera assicurarsi che il nome memorizzato sia corretto, aggiungere un TRIGGER per l'aggiornamento e inserire per gestire il controllo.