válida tipos tabla restricciones restriccion referencial referencia llave integridad hace foreign foranea externa datos clave check sql

sql - tipos - Agregar nueva columna con restricción de clave externa en un comando



tipos de restricciones en base de datos (9)

Como suele suceder con la pregunta relacionada con SQL, depende del DBMS. Algunos DBMS le permiten combinar operaciones de tabla ALTER separadas por comas. Por ejemplo...

Sintaxis de Informix :

ALTER TABLE one ADD two_id INTEGER, ADD CONSTRAINT FOREIGN KEY(two_id) REFERENCES two(id);

La sintaxis para IBM DB2 LUW es similar, repitiendo la palabra clave ADD pero (si leo el diagrama correctamente) sin requerir una coma para separar los elementos agregados.

Sintaxis de Microsoft SQL Server :

ALTER TABLE one ADD two_id INTEGER, FOREIGN KEY(two_id) REFERENCES two(id);

Algunos otros no le permiten combinar operaciones de ALTER TABLE de esa manera. El SQL estándar solo permite una sola operación en la instrucción ALTER TABLE, por lo que en SQL estándar, debe hacerse en dos pasos.

Estoy tratando de agregar una nueva columna que será una clave externa. Pude agregar la columna y la restricción de clave externa usando dos comandos ALTER TABLE separados:

ALTER TABLE one ADD two_id integer ALTER TABLE one ADD FOREIGN KEY (two_id) REFERENCES two(id)

¿Hay alguna manera de hacer esto con un comando ALTER TABLE en lugar de dos? No pude encontrar nada que funcione.


En Oracle :

ALTER TABLE one ADD two_id INTEGER CONSTRAINT Fk_two_id REFERENCES two(id);


En MS SQL SERVER:

Con nombre de clave externa definida por el usuario

ALTER TABLE tableName ADD columnName dataType, CONSTRAINT fkName FOREIGN KEY(fkColumnName) REFERENCES pkTableName(pkTableColumnName);

Sin nombre de clave externa definida por el usuario

ALTER TABLE tableName ADD columnName dataType, FOREIGN KEY(fkColumnName) REFERENCES pkTableName(pkTableColumnName);


En MS-SQLServer:

ALTER TABLE one ADD two_id integer CONSTRAINT fk FOREIGN KEY (two_id) REFERENCES two(id)


Para DB2, la sintaxis es:

ALTER TABLE one ADD two_id INTEGER FOREIGN KEY (two_id) REFERENCES two (id);


Para SQL Server debería ser algo así como

ALTER TABLE one ADD two_id integer constraint fk foreign key references two(id)


Puedes hacerlo como a continuación en SQL Server

ALTER TABLE one ADD two_id int foreign key REFERENCES two(id)


DLL PostgreSQL para agregar una columna FK:

ALTER TABLE one ADD two_id INTEGER REFERENCES two;


ALTER TABLE TableName ADD NewColumnName INTEGER, FOREIGN KEY(NewColumnName) REFERENCES [ForeignKey_TableName](Foreign_Key_Column)