81 - Restricciones 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").

Podemos aplicar restricciones a nivel de campo (restricción de campo) o a nivel de tabla (restricción de tabla).

En el siguiente ejemplo creamos la tabla "libros" con varias restricciones:

 create table libros(
  codigo int identity,
  titulo varchar(40),
  codigoautor int not null,
  codigoeditorial tinyint not null,
  precio decimal(5,2)
   constraint DF_precio default (0),
  constraint PK_libros_codigo
   primary key clustered (codigo),
  constraint UQ_libros_tituloautor
    unique (titulo,codigoautor),
  constraint FK_libros_editorial
   foreign key (codigoeditorial)
   references editoriales(codigo)
   on update cascade,
  constraint FK_libros_autores
   foreign key (codigoautor)
   references autores(codigo)
   on update cascade,
  constraint CK_precio_positivo check (precio>=0)
);

En el ejemplo anterior creamos:

- una restricción "default" para el campo "precio" (restricción a nivel de campo);

- una restricción "primary key" con índice agrupado para el campo "codigo" (a nivel de tabla);

- una restricción "unique" con índice no agrupado (por defecto) para los campos "titulo" y "codigoautor" (a nivel de tabla);

- una restricción "foreign key" para establecer el campo "codigoeditorial" como clave externa que haga referencia al campo "codigo" de "editoriales y permita actualizaciones en cascada y no eliminaciones (por defecto "no action");

- una restricción "foreign key" para establecer el campo "codigoautor" como clave externa que haga referencia al campo "codigo" de "autores" y permita actualizaciones en cascada y no eliminaciones;

- una restricción "check" para el campo "precio" que no admita valores negativos;

Si definimos una restricción "foreign key" al crear una tabla, la tabla referenciada debe existir.


Retornar