4.4.1. Restricciones de tabla

Cuando las restricciones se indican después de las definiciones de las columnas, y pueden afectar a varias de ellas simultáneamente, se dice que son restricciones de tabla:

 


create table Persona ( nss int, nombre varchar(30), pareja varchar(30), jefe int, correo varchar(20), primary key (nss), unique (pareja), foreign key (jefe) references Persona, check (correo ~ `@´ ) );

Esta notación permite que la restricción pueda abarcar varias columnas.


create table Curso ( materia varchar(30), grupo char(4), dia int, hora time, aula int, primary key (materia, grupo), unique (dia, hora, aula) );  


Un curso se identifica por el grupo y la materia, y dos cursos no pueden estar en la misma aula el mismo día y a la misma hora.

Al igual que la restricción de columna, a las restricciones de tabla puede asignárseles un nombre:


create table Persona ( nss int, nombre varchar(30), pareja varchar(30), jefe int, correo varchar(20), constraint identificador primary key (nss), constraint monogamia unique (pareja), constraint un_jefe foreign key (jefe) references Persona, check (correo ~ `@´ ) );

La sentencia alter table permite añadir (add) o quitar (drop) restricciones ya definidas:


alter table Persona drop constraint monogamia alter table add constraint monogamia unique (pareja);