Los últimos tutoriales de desarrollo web
 

SQL Restricción FOREIGN KEY


SQL EXTERIOR restricción de clave

Una clave externa en una tabla de puntos a una clave principal de otra tabla.

Vamos a ilustrar la clave externa con un ejemplo. Mira las dos tablas siguientes:

El "Persons" tabla:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

El "Orders" tabla:

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Tenga en cuenta que el "P_Id" columna en las "Orders" puntos de la tabla a la "P_Id" columna en el "Persons" tabla.

El "P_Id" columna en el "Persons" tabla es la clave principal de la "Persons" tabla.

El "P_Id" columna en el "Orders" tabla es una clave externa de la "Orders" mesa.

La restricción FOREIGN KEY se utiliza para prevenir acciones que destruirían los vínculos entre las tablas.

La restricción FOREIGN KEY que también impide que los datos no válidos sea insertado en la columna de clave externa, ya que tiene que ser uno de los valores contenidos en la tabla que apunta.


SQL EXTERIOR restricción de clave en CREATE TABLE

El siguiente SQL crea una clave externa en la "P_Id" columna cuando el "Orders" se crea la tabla:

MySQL:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

Para permitir la designación de una restricción FOREIGN KEY, y para definir una restricción FOREIGN KEY en varias columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

SQL EXTERIOR restricción de clave en ALTER TABLE

Para crear una restricción FOREIGN KEY en la "P_Id" columna cuando el "Orders" ya está creada la tabla, utilice el siguiente código SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Para permitir la designación de una restricción FOREIGN KEY, y para definir una restricción FOREIGN KEY en varias columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Para quitar una restricción FOREIGN KEY

Para quitar una restricción FOREIGN KEY, utilice el siguiente código SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders