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)