36-llaves foraneas en SQL

Las restrinciones FOREIGN KEY se utiliza para evitar acciones que destruirían enlaces entre tablas.

la FOREIGN KEY es un campo en una tabla que se refere a una PRIMARY KEY en otra tabla

La tabla que tinene FOREIGN KEY es una tabla secundaria

la tabla que tiene PRIMARY KEY es una tabla primaria

Ejemplo de como crear una llave foranea en una tabla

El siguiente SQL crea un FOREIGN KEYen la columna "PersonID" cuando se crea la tabla "Pedidos":

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
); 
    



...

Servidor SQL/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
); 
    



Para permitir el nombramiento de un FOREIGN KEYrestricción, y para definir una FOREIGN KEYrestricción en varias columnas, use la siguiente sintaxis SQL:

MySQL/SQL Server/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);  
    



ALTER TABLE FOREIGN KEY

Para crear un FOREIGN KEYrestricción en la columna "PersonID" cuando la tabla "Pedidos" ya está creada, use el siguiente SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);  
        



Para permitir el nombramiento de un FOREIGN KEYrestricción, y para definir una FOREIGN KEYrestricción en varias columnas, use la siguiente sintaxis SQL: :

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID); 
  



DROP FOREIGN KEY

Para eliminar una llave foranea use el siguiente SQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder; 
  



Servidor SQL/Oracle/MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder; 
  




Publicar un comentario

0 Comentarios