Listado completo de tutoriales
55 - Restricciones foreign key al crear la tabla |
Hasta el momento hemos agregado restricciones a tablas existentes con "alter table" (manera aconsejada), también pueden establecerse al momento de crear una tabla (en la instrucción "create table").
En el siguiente ejemplo creamos la tabla "libros" con la restricción respectiva:
create table editoriales( codigo serial, nombre varchar(20), primary key (codigo) ); create table libros( codigo serial, titulo varchar(40), autor varchar(30), codigoeditorial smallint references editoriales(codigo), primary key(codigo) );
En el ejemplo anterior creamos una restricción "foreign key" para establecer el campo "codigoeditorial" como clave externa que haga referencia al campo "codigo" de "editoriales.
Si definimos una restricción "foreign key" al crear una tabla, la tabla referenciada debe existir.
drop table if exists editoriales; drop table if exists libros; create table editoriales( codigo serial, nombre varchar(20), primary key (codigo) ); create table libros( codigo serial, titulo varchar(40), autor varchar(30), codigoeditorial smallint references editoriales(codigo), primary key(codigo) ); -- Ingresamos algunos registros en ambas tablas: insert into editoriales(nombre) values('Emece'); insert into editoriales(nombre) values('Planeta'); insert into editoriales(nombre) values('Siglo XXI'); insert into libros(titulo,autor,codigoeditorial) values('El aleph','Borges',1); insert into libros(titulo,autor,codigoeditorial) values('Martin Fierro','Jose Hernandez',2); insert into libros(titulo,autor,codigoeditorial) values('Aprenda PHP','Mario Molina',2); -- Ingresamos un libro con un código de editorial inexistente: insert into libros(titulo,autor,codigoeditorial) values('Aprenda ASP','Facundo Cabrera',7);
La ejecución de este lote de comandos SQL genera una salida similar a: