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"
dep | departamento |
---|---|
1 | ADMINISTRACION |
2 | INFORMATICA |
3 | COMERCIAL |
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
per | nombre | apellido1 | apellido2 | dep |
---|---|---|---|---|
1 | ANTONIO | PEREZ | GOMEZ | 1 |
2 | ANTONIO | GARCIA | RODRIGUEZ | 2 |
3 | PEDRO | RUIZ | GONZALEZ | 4 |
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)
}
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)
}
{
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
No hay comentarios.:
Publicar un comentario