Está en la página 1de 1

Constraints

Para cambiar las restricciones y la clave primaria de una tabla debemos usar ALTER
TABLE.
Crear una clave primaria (primary key):

ALTER TABLE T_PEDIDOS ADD CONSTRAINT PK_PEDIDOS


PRIMARY KEY (numpedido,lineapedido);

Crear una clave externa, para integridad referencial (foreign key):

ALTER TABLE T_PEDIDOS ADD CONSTRAINT FK_PEDIDOS_CLIENTES


FOREIGN KEY (codcliente) REFERENCES T_CLIENTES (codcliente));

Crear un control de valores (check constraint):

ALTER TABLE T_PEDIDOS ADD CONSTRAINT CK_ESTADO


CHECK (estado IN (1,2,3));

Crear una restriccin UNIQUE:

ALTER TABLE T_PEDIDOS ADD CONSTRAINT UK_ESTADO


UNIQUE (correosid);

Normalmente una restriccin de este tipo se implementa mediante un indice unico (ver
CREATE INDEX).
Borrar una restriccin:

ALTER TABLE T_PEDIDOS DROP CONSTRAINT CON1_PEDIDOS;

Deshabilita una restriccin:


ALTER TABLE T_PEDIDOS DISABLE CONSTRAINT CON1_PEDIDOS;

habilita una restriccin:

ALTER TABLE T_PEDIDOS ENABLE CONSTRAINT CON1_PEDIDOS;

la sintaxis ALTER TABLE para restricciones es:


ALTER TABLE [esquema.]tabla
constraint_clause,...
[ENABLE enable_clause | DISABLE disable_clause]
[{ENABLE|DISABLE} TABLE LOCK]
[{ENABLE|DISABLE} ALL TRIGGERS];

donde constraint_clause puede ser alguna de las siguientes entradas:


ADD out_of_line_constraint(s)
ADD out_of_line_referential_constraint
DROP PRIMARY KEY [CASCADE] [{KEEP|DROP} INDEX]
DROP UNIQUE (column,...) [{KEEP|DROP} INDEX]
DROP CONSTRAINT constraint [CASCADE]
MODIFY CONSTRAINT constraint constrnt_state
MODIFY PRIMARY KEY constrnt_state
MODIFY UNIQUE (column,...) constrnt_state
RENAME CONSTRAINT constraint TO new_name

donde a su vez constrnt_state puede ser:


[[NOT] DEFERRABLE] [INITIALLY {IMMEDIATE|DEFERRED}]
[RELY | NORELY] [USING INDEX using_index_clause]
[ENABLE|DISABLE] [VALIDATE|NOVALIDATE]
[EXCEPTIONS INTO [schema.]table]

Borrar una restriccin:


ALTER TABLE T_PEDIDOS DROP CONSTRAINT CON1_PEDIDOS;

También podría gustarte