Office
Iniciar sesión

Cláusula CONSTRAINT

Una restricción es similar a un índice, aunque también permite establecer una Relación con otra tabla.

Use la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar restricciones. Hay dos tipos de cláusulas CONSTRAINT: una para crear una restricción en un solo campo y otra para crear una restricción en más de un campo.

Nota: El motor de base de datos de Microsoft Access no admite el uso de CONSTRAINT, ni de ninguna de las instrucciones de lenguaje de definición de datos, con bases de datos que no son de Microsoft Access. En su lugar, use los métodos de creación de objetos de acceso a datos (DAO).

Sintaxis

Restricción de un solo campo:

CONSTRAINT nombre {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES tablaExterna [(campoExterno1, campoExterno2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Restricción de varios campos:

CONSTRAINT nombre
{PRIMARY KEY (principal1[, 2 [, ...]]) |
UNIQUE (única1[, única2 [, ...]]) |
NOT NULL (notnull1[, notnull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES tablaExterna [(campoExterno1 [, campoExterno2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

La cláusula CONSTRAINT consta de los elementos siguientes:

Parte

Descripción

nombre

Nombre de la restricción que se va a crear.

principal1, principal2

Nombre del campo o los campos que se van a designar como clave principal.

única1, única2

Nombre del campo o los campos que se van a designar como clave única.

nonulo1, nonulo2

Nombre del campo o los campos que se restringen a valores no nulos.

ref1, ref2

Nombre de un campo o de varios campos de clave externa que hacen referencia a campos de otra tabla.

tablaExterna

Nombre de la tabla externa que contiene el campo o los campos especificados por campoExterno.

campoExterno1, campoExterno2

Nombre del campo o los campos de tablaExterna que ref1, ref2 especifiquen. Esta cláusula no se puede omitir si el campo al que se hace referencia es la clave principal de tablaExterna.


Observaciones

Use la sintaxis de una restricción de un solo campo en la cláusula de definición de campo de una instrucción ALTER TABLE o CREATE TABLE seguida inmediatamente de la especificación del tipo de datos del campo.

Use la sintaxis de una restricción de varios campos siempre que use la palabra reservada CONSTRAINT fuera de una cláusula de definición de campo en una instrucción ALTER TABLE o CREATE TABLE.

Con CONSTRAINT puede designar un campo como uno de los tipos de restricciones siguientes:

  • Puede usar la palabra reservada UNIQUE para designar un campo como clave única. Esto significa que dos registros de la tabla no pueden tener el mismo valor en este campo. Puede restringir cualquier campo o lista de campos como clave única. Si una restricción de varios campos se designa como clave única, los valores combinados de todos los campos del índice deben ser únicos, aunque dos o más registros tengan el mismo valor en solo uno de los campos.

  • Puede usar las palabras reservadas PRIMARY KEY para designar un campo o conjunto de campos de una tabla como clave principal. Todos los valores de la clave principal deben ser únicos y no nulos, y solo puede haber una clave principal para una tabla.

    Nota: No establezca una restricción PRIMARY KEY en una tabla que ya tenga una clave principal; si lo hace, se produce un error.

  • Puede usar las palabras reservadas FOREIGN KEY para designar un campo como clave externa. Si la clave principal de la tabla externa se compone de más de un campo, debe usar una definición de restricción de varios campos, donde se indiquen todos los campos de referencia, el nombre de la tabla externa y los nombres de los campos a los que se hace referencia en la tabla externa, en el mismo orden en el que se indican los campos de referencia. Si el campo o los campos a los que se hace referencia corresponden a la clave principal de la tabla externa, no tiene que especificar dichos campos. De manera predeterminada, el motor de base de datos se comporta como si la clave principal de la tabla externa correspondiera a los campos a los que se hace referencia.

    Las restricciones de clave externa definen acciones específicas que se van a realizar cuando un valor de clave principal correspondiente cambie:

  • Puede especificar acciones que se van a realizar en la tabla externa en función de que se realice una acción correspondiente en una clave principal de la tabla en la que se define CONSTRAINT. Por ejemplo, considere la siguiente definición de la tabla Clientes:

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Considere la siguiente definición de la tabla Pedidos, que define una relación de clave externa que hace referencia a la clave principal de la tabla Clientes:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

Ambas cláusulas, ON UPDATE CASCADE y ON DELETE CASCADE, se definen en la clave externa. La cláusula ON UPDATE CASCADE indica que, si el identificador de un cliente (CustId) se actualiza en la tabla Clientes, la actualización se realizará en cascada en la tabla Pedidos. Cada pedido que contenga un valor de identificador de cliente correspondiente se actualizará automáticamente con el nuevo valor. La cláusula ON DELETE CASCADE indica que, si un cliente se elimina de la tabla Clientes, todas las filas que contengan el mismo valor de identificador de cliente se eliminarán.

Considere esta otra definición de la tabla Pedidos, que usa la acción SET NULL en lugar de la acción CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

La cláusula ON UPDATE SET NULL indica que, si un identificador de cliente (CustId) se actualiza en la tabla Clientes, los valores de clave externa correspondientes se establecerán automáticamente en NULL. La cláusula ON DELETE SET NULL indica que, si un cliente se elimina de la tabla Clientes, todos los valores de clave externa correspondientes de la tabla Pedidos se establecerán automáticamente en NULL.

Para evitar la creación automática de índices de claves externas, se puede usar el modificador NO INDEX. Este formulario de definición de clave externa solo debe usarse en aquellos casos en que los valores resultantes de índice se duplicarían con frecuencia. Cuando los valores de un índice de clave externa se duplican con frecuencia, el uso de un índice puede ser menos eficaz que simplemente realizar un análisis de la tabla. El mantenimiento de este tipo de índice, con filas insertadas y eliminadas en la tabla, degrada el rendimiento y no ofrece ninguna ventaja.



Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×