Bases de Datos > Oracle

 Eliminar Constraint

(1/2) > >>

lcauso:
Hola:
  Necesito crear un script para un usuario que elimine una constraint cuyo nombre ha sido generado por el sistema (SYS_0000123) que yo desconozco y que el usuario no puede mirar.

Intento coger el nombre de la constraint de las tablas del usuario, almacenarla en una variable y despues se la paso como parametro al ALTER TABLE mediante un ECXECUTE IMMEDIATE, pero me funciona

¿Alguien se le ocurre como hacerlo?

Muchas gracias por todo

JuanK:
necesito mas info, de todas maneras revisa que no va y sea solo un not null.

lcauso:
Lo que quiero es eliminar una restriccion de valores. La columna de la tabla tiene creada una restriccion del tipo:
              col1    char(3) NOT NULL   CHECK (col1 in ('ABC','XYZ'))

por lo que cuando se crea el sistema le da el nombre SYS_0000123

Mediante la tabla USER_CONSTRAINTS o USER_CONS_COLUMN llego a saber las constraint que tiene definidas la columna que son dos (una por el NOT NULL y otra por la restriccion de valores), pero no sé como eliminarlas.

¿Se te ocurre alguna idea?

Gracias

lcauso:
Hola de nuevo:
   se me ha ocurrido una forma pero tengo un problema.

Yo creo un script PRIMERO.sql con las siguientes sentencias
      DECLARE
            variable1   VARCHAR2(30);
      BEGIN
           SELECT CONSTRAINT_NAME INTO variable 1 FROM USER_CONSTRAIT  WHERE....
           @@prueba2.sql variable1;
END;
/

Donde el script de prueba2.sql tiene la sentencia ALTER para eliminar la constraint que le paso como parametro mediante variable1 con la sentencia:
      ALTER TABLE tabla1 DROP CONSTRAINT &1;

Mi problema es que no me coge el valor de variable1 sino el literal variable1.

¿Sabeis como lo puedo hacer?

Gracias

JuanK:
incluye esto:

EXECUTE IMMEDIATE 'ALTER TABLE TABLA1 DROP CONSTRAINT '||variable1

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa