tipos referencial primaria modificar llave integridad foranea ejemplos disable deshabilitar constraint check borrar all oracle ora-00933

referencial - modificar llave primaria oracle



cómo modificar una restricción de verificación existente? (4)

Debe soltarlo y volver a crearlo, pero no tiene que incurrir en el costo de revalidar los datos si no lo desea.

alter table t drop constraint ck ; alter table t add constraint ck check (n < 0) enable novalidate;

La cláusula enable novalidate forzará a las inserciones o actualizaciones a enable novalidate la restricción, pero no forzará un escaneo completo de tabla contra la tabla para verificar que todas las filas cumplan.

¿Hay alguna manera de modificar una restricción de verificación existente en una tabla que no sea soltarla y volver a crearla ?

create table t ( n number); ora10g> Tabelle wurde erstellt. ora10g> alter table t add constraint ck check(n>0); Tabelle wurde geõndert. ora10g> alter table t modify constraint ck check(n<0); alter table t modify constraint ck check(n<0) * FEHLER in Zeile 1: ORA-00933: SQL-Befehl wurde nicht korrekt beendet


NO, no puedes hacerlo de otra manera.


No. Si tal característica existiera, se enumeraría en esta ilustración de sintaxis . (Aunque es posible que exista una característica de SQL no documentada, o tal vez haya algún paquete del que no tenga conocimiento).


Primero crea una nueva restricción y luego descarta la anterior.
De esa forma, se asegurará de que:

  • las restricciones siempre están en su lugar
  • Las filas existentes no violan nuevas restricciones
  • no se intenta INSERT / UPDATE ilegal después de eliminar una restricción y antes de aplicar una nueva.