Restricción FOREIGN KEY SQL

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