2012-05-11 22 views
6

Quiero crear la tabla con las columnas:Crear una clave externa a las tablas del sistema

IdRole 
IdProcedure 

la idea es que IdProcedure es una FK a sys.objects.

Cuando creo esta consulta:

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

que trabaja muy bien, pero éste:

clave externa referencias 'FK_SysProcedure' mesa inválida :

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

me dice 'sys.objects'.

+8

'sys.objects' es una vista, no una tabla. No puede crear FK a los objetos del sistema de todos modos. –

+0

ok gracias ... No estaba seguro de poder hacerlo ... – davibq

+6

¿Por qué querrías hacer esto? En primer lugar, evitaría la caída/recreación ya que se asigna aleatoriamente un nuevo object_id. Quizás puedas decirnos qué problema estás tratando de resolver en lugar de decirnos que quieres resolverlo con una clave externa para sys.objects. –

Respuesta

1

sys.objects no es una tabla. Es una vista de sistema respaldada por datos almacenados en formato propietario de SQL Server. Si desea asegurarse de que el nombre almacenado sea correcto, agregue un TRIGGER para actualizar e insertar para manejar la verificación.

Cuestiones relacionadas