SQL FOREIGN KEY

La clave externa o FOREIGN KEY, es una columna o varias columnas, que sirven para señalar cual es la clave primaria de otra tabla.

La columna o columnas señaladas como FOREIGN KEY, solo podrán tener valores que ya existan en la clave primaria PRIMARY KEY de la otra tabla.

Ejemplo de FOREIGN KEY

Tabla “departamentos”, con la clave primaria “dep”

depdepartamento
1ADMINISTRACION
2INFORMATICA
3COMERCIAL

Tabla personas, con una clave externa FOREIGN KEY ‘dep’, que hace referencia a la clave primaria ‘dep’ de la tabla anterior ‘departamentos’ y por tanto, solo puede tener un valor de los que tiene en esa tabla

pernombreapellido1apellido2dep
1ANTONIOPEREZGOMEZ1
2ANTONIOGARCIARODRIGUEZ2
3PEDRORUIZGONZALEZ4

Definiciones de FOREIGN KEY en CREATE TABLE para MySQL

CREATE TABLE departamentos { dep int NOT NULL,
departamento varchar(255),
PRIMARY KEY (dep)
}


CREATE TABLE personas
{
per int NOT NULL,
nombre varchar(255),
apellido1 varchar(255),
dep int NOT NULL,
PRIMARY KEY (per),
FOREIGN KEY (dep) REFERENCES departamentos(dep)
}

Definiciones de FOREIGN KEY en CREATE TABLE para ORACLE, ACCESS, SQLSERVER

CREATE TABLE departamentos
{
dep int NOT NULL PRIMARY KEY,
departamento varchar(255),
}


CREATE TABLE personas
{
per int NOT NULL PRIMARY KEY,
nombre varchar(255),
apellido1 varchar(255),
dep int FOREIGN KEY REFERENCES departamentos (dep)
}

Si la clave externa o foránea (FOREIGN KEY) está compuesta por varias columnas o queremos ponerle un nombre, utilizaremos la fórmula siguiente:

CONSTRAINT fkpersonas FOREIGN KEY (dep, id) REFERENCES departamentos(dep,id).

Ejemplo FOREIGN KEY con ALTER TABLE

ALTER TABLE ADD FOREIGN KEY (dep) REFERENCES departamentos(dep)

Ejemplo FOREIGN KEY múltiple (varias columnas) con ALTER TABLE:

ALTER TABLE ADD CONSTRAINT fkpersonas FOREIGN KEY (dep) REFERENCES departamentos(dep)

Para borrar un clave externa (FOREIGN KEY) utilizamos DROP, pero varía según la base de dato:

Borrar FOREIGN KEY en MySQL ALTER TABLE personas DROP FOREIGN KEY dep

Borrar FOREIGN KEY en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas DROP CONSTRAINT dep

SQL CHECK >>

<< SQL PRIMARY KEY

SQL