Bases de Datos > Oracle
Eliminar Constraint
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
[#] Página Siguiente
Ir a la versión completa