Estoy tratando de agregar una nueva columna que será una clave foránea. He podido agregar la columna y la restricción de clave externa usando dos ALTER TABLE
comandos 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 se me ocurrió nada que funcione.
Respuestas:
Como suele ocurrir con las preguntas relacionadas con SQL, depende del DBMS. Algunos DBMS le permiten combinar operaciones de tabla ALTER separadas por comas. Por ejemplo...
Sintaxis de Informix :
La sintaxis para IBM DB2 LUW es similar, repite la palabra clave ADD pero (si leo el diagrama correctamente) no requiere una coma para separar los elementos agregados.
Sintaxis de Microsoft SQL Server :
Algunos otros no le permiten combinar operaciones ALTER TABLE como esa. 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.
fuente
En MS-SQLServer:
fuente
Para SQL Server debería ser algo como
fuente
En MS SQL SERVER:
Con nombre de clave externa definida por el usuario
Sin nombre de clave externa definida por el usuario
fuente
En oráculo :
fuente
Actualización 2020
Es una pregunta bastante antigua, pero la gente todavía está volviendo a ella, veo. En caso de que las respuestas anteriores no lo hayan ayudado, asegúrese de estar utilizando el mismo tipo de datos para la nueva columna que el ID de la otra tabla.
En mi caso, estaba usando Laravel y uso "entero sin signo" para todos mis identificadores, ya que no tiene sentido tener un ID negativo LOL.
Entonces, para eso, la consulta SQL sin formato cambiará así:
Espero que ayude
fuente
Puedes hacerlo como a continuación en SQL Server
fuente
PostgreSQL DLL para agregar una columna FK:
fuente
ALTER TABLE TableName ADD NewColumnName INTEGER, FOREIGN KEY(NewColumnName) REFERENCES [ForeignKey_TableName](Foreign_Key_Column)
fuente
Para DB2, la sintaxis es:
fuente
Si también necesita agregar valores predeterminados en caso de que ya tenga algunas filas en la tabla, agregue el valor POR DEFECTO
fuente
Prueba esto:
fuente