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 restricción UNIQUE: ALTER TABLE T_PEDIDOS ADD CONSTRAINT UK_ESTADO UNIQUE (correosid);

Normalmente una restricción de este tipo se implementa mediante un indice unico (ver CREATE INDEX).

Borrar una restricción: ALTER TABLE T_PEDIDOS DROP CONSTRAINT CON1_PEDIDOS; Deshabilita una restricción: ALTER TABLE T_PEDIDOS DISABLE CONSTRAINT CON1_PEDIDOS; habilita una restricción: 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 restricción: ALTER TABLE T_PEDIDOS DROP CONSTRAINT CON1_PEDIDOS;