Tecnología

Inicio

Cómo hacer un aplazable restricción en Oracle

Cómo hacer un aplazable restricción en Oracle


Las restricciones están diseñadas para prevenir accidentes en el manejo de datos y para preservar la integridad de los datos. En algunos casos, sin embargo, puede ser necesario diferir limitaciones de modo que en realidad no cumplir sus reglas hasta que se cumpla una condición específica. Por ejemplo, es posible aplazar las reglas de una restricción para activarse sólo cuando un "commit" se ha solicitado.

Instrucciones

1 Crear dos tablas en SQLPlus para demostrar las limitaciones diferibles de la siguiente manera:

CREATE TABLE test (

test_id INTEGER PRIMARY KEY,

foreign_id INTEGER NOT NULL);

CREAR TABLA test2 (

test2_id INTEGER PRIMARY KEY,

foreign2_id INTEGER NOT NULL

);

2 Alterar las tablas en SQLPlus añadir restricciones de clave externa entre sí de la siguiente manera:

ALTER TABLE test Agregar restricción test2REF

FOREIGN KEY (foreign_ID) REFERENCIAS test2 (test2_ID)

INICIALMENTE DIFERIDOS DEFERRABLE;

ALTER TABLE test2 Agregar restricción testref

FOREIGN KEY (foreign2_ID) REFERENCIAS prueba (test_ID)

INICIALMENTE DIFERIDOS DEFERRABLE;

3 Insertar registros en ambas tablas en SQLPlus. Esto demuestra que con una restricción diferible, las filas se pueden agregar a pesar de las restricciones de clave externa:

Insertar en los valores de ensayo (1, 2);

Insertar en los valores test2 (2, 1);

4 Comprometer a la información en el comando SQLPlus con:

Cometer;

Esto completará la operación y filas será añadido a ambas tablas.

5 Demostrar cómo fallaría mediante la ejecución de todos los comandos de nuevo en una sola operación, pero sin la restricción diferida. A la orden de entrar en SQLPlus:

- En primer lugar eliminar las tablas.

Drop Table limitaciones CASCADE prueba;

Eliminar la tabla test2 limitaciones CASCADE;

- A continuación, introduzca todos los comandos anteriores, pero sin las limitaciones diferibles de la siguiente manera:

CREATE TABLE test (

test_id INTEGER PRIMARY KEY,

foreign_id INTEGER NOT NULL

);

CREAR TABLA test2 (

test2_id INTEGER PRIMARY KEY,

foreign2_id INTEGER NOT NULL

);

ALTER TABLE test Agregar restricción test2REF

FOREIGN KEY (foreign_id) REFERENCIAS test2 (test2_id);

ALTER TABLE test2 Agregar restricción testref

FOREIGN KEY (foreign2_id) REFERENCIAS prueba (test_id);

Insertar en los valores de ensayo (1, 2);

Insertar en los valores test2 (2, 1);

Esta versión del guión fallará como las limitaciones no han sido aplazado en espera de un comando "COMMIT".

Consejos y advertencias

  • Comandos con "-" delante de ellos son los comentarios en el código.