una tablas tabla relacionar primaria por llave foreign foranea declarar crear creada compuesta como codigo agregar sql-server-2005 foreign-key-relationship composite-primary-key

sql-server-2005 - tablas - llave primaria y foranea sql



RelaciĆ³n de clave externa con claves primarias compuestas en SQL Server 2005 (2)

Como Table2 tiene una clave principal compuesta (FileID, FileType) , cualquier referencia a ella también debe incluir ambas columnas .

ALTER TABLE dbo.Table1 ADD CONSTRAINT FK_Table1_Table2 FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType)

A menos que tenga una restricción / índice único en el campo Table2.FileID (pero, en caso afirmativo, ¿por qué no es esto el PK?), No puede crear una relación FK para solo partes del PK en la tabla de destino, simplemente puede '' t hacerlo

Tengo dos mesas

Table1( FileID, BundledFileID, Domain)

y

Table2( FileID, FileType, FileName)

En FileID y FileType son la clave principal compuesta. Quiero crear una relación de clave externa desde Table1.FileID a Table1.FileID .

¿Es posible hacer esto?


Marc ya ha dado una respuesta bastante buena. Si las filas en la Tabla1 solo se relacionan con un tipo de archivo (por ejemplo, FileType ''ABC''), puede agregar FileType a Table1 como una columna calculada:

ALTER TABLE Table1 ADD FileType as ''ABC''

Que luego puede utilizar en la clave externa.