SQL: chiave esterna

Una chiave esterna è una chiave utilizzata per collegare due tabelle insieme. A volte viene anche chiamata chiave di riferimento.

Una chiave esterna è una colonna o una combinazione di colonne i cui valori corrispondono a una chiave primaria in una tabella diversa.

The relationship between 2 tables matches the Primary Key in one of the tables with a Foreign Key in the second table.

Se una tabella ha una chiave primaria definita su uno o più campi, non puoi avere due record con lo stesso valore di quel campo.

Esempio

Considera la struttura delle seguenti due tabelle.

CUSTOMERS table

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

ORDERS table

CREATE TABLE ORDERS (
   ID          INT        NOT NULL,
   DATE        DATETIME, 
   CUSTOMER_ID INT references CUSTOMERS(ID),
   AMOUNT     double,
   PRIMARY KEY (ID)
);

Se la tabella ORDERS è già stata creata e la chiave esterna non è stata ancora impostata, utilizzare la sintassi per specificare una chiave esterna modificando una tabella.

ALTER TABLE ORDERS 
   ADD FOREIGN KEY (Customer_ID) REFERENCES CUSTOMERS (ID);

ELIMINA un vincolo CHIAVE ESTERA

Per eliminare un vincolo FOREIGN KEY, utilizzare la seguente sintassi SQL.

ALTER TABLE ORDERS
   DROP FOREIGN KEY;
sql-rdbms-concepts.htm