Restricción FOREIGN KEY SQL
- Página anterior Llave primaria de SQL
- Página siguiente SQL Check
Restricción FOREIGN KEY SQL
Una clave foránea de una tabla apunta a la clave primaria de otra tabla.
Vamos a explicar la clave foránea con un ejemplo. Vea las siguientes dos tablas:
Tabla "Persons":
Id_P | Apellido | Nombre | Dirección | Ciudad |
---|---|---|---|---|
1 | Adams | John | Calle Oxford | Londres |
2 | Bush | George | Avenida Quinta | Nueva York |
3 | Carter | Thomas | Calle Chang'an | Pekín |
Tabla "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
Tenga en cuenta que la columna "Id_P" en "Orders" apunta a la columna "Id_P" en la tabla "Persons".
La columna "Id_P" en la tabla "Persons" es la CLAVE PRIMARIA en la tabla "Persons".
La columna "Id_P" en la tabla "Orders" es una CLAVE FORÁNEA en la tabla "Orders".
La restricción de CLAVE FORÁNEA se utiliza para prevenir acciones que destruyen la conexión entre tablas.
La restricción de CLAVE FORÁNEA también previene la inserción de datos ilegales en la columna de clave foránea, ya que debe ser uno de los valores de la tabla a la que apunta.
Restricción de CLAVE FORÁNEA en CREATE TABLE
El siguiente SQL crea la CLAVE FORÁNEA para la columna "Id_P" en la tabla "Orders":
MySQL:
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), CLAVE FORÁNEA (Id_P) SE REFIERE A PERSONS(Id_P) )
SQL Server / Oracle / MS Access:
CREATE TABLE Orders ( Id_O int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, Id_P int FOREIGN KEY REFERENCES Persons(Id_P) )
Si necesita nombrar la restricción FOREIGN KEY y definir restricciones FOREIGN KEY para múltiples columnas, utilice la siguiente sintaxis SQL:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) )
Restricción FOREIGN KEY de SQL en ALTER TABLE
Si crea una restricción FOREIGN KEY para la columna "Id_P" mientras la tabla "Orders" ya existe, utilice el siguiente SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Si necesita nombrar la restricción FOREIGN KEY y definir restricciones FOREIGN KEY para múltiples columnas, utilice la siguiente sintaxis SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Anular restricción FOREIGN KEY
Si desea anular la restricción FOREIGN KEY, utilice el siguiente SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
- Página anterior Llave primaria de SQL
- Página siguiente SQL Check