Wie kann ich eine "not null" Einschränkung in Oracle fallen lassen, wenn ich den Namen der Einschränkung nicht kenne?

Ich habe eine Datenbank, die eine not NULL Bedingung für ein Feld, und ich möchte diese Einschränkung entfernen. Die erschwerender Faktor ist, dass diese Einschränkung hat eine system-definierte Namen, und das constraint-name unterscheidet sich zwischen den Produktions-server, integration server, und die verschiedenen Entwickler-Datenbanken. Unsere aktuellen Prozess check-in ändern von Skripten und eine automatisierte Aufgabe führt die entsprechenden Abfragen durch sqlplus gegen die Zieldatenbank, so dass ich lieber eine Lösung, die gerade gesendet werden, direkt in sqlplus.

Auf meine eigene Datenbank, die SQL zu fallen wäre dies:

alter table MYTABLE drop constraint SYS_C0044566

Sehe ich die Einschränkung, wenn ich die Abfrage der all_constraints anzeigen:

select * from all_constraints where table_name = 'MYTABLE'

aber ich bin mir nicht sicher, wie Sie mit den SEARCH_CONDITION's LONG Daten geben oder wie man am besten dynamisch löschen Sie die gesuchte Einschränkung, auch nachdem ich Ihren Namen kennen.

So, wie kann ich erstellen Sie ein Skript ändern können, lassen Sie diese Einschränkung basiert auf dem, was es ist, anstatt das, was sein name ist?


BEARBEITEN:
@Allan ' s Antwort ist gut, aber ich bin besorgt (in meinem Mangel an Oracle-know-how), kann es nicht universell wahr, dass jede Einschränkung, dass möglicherweise ein vom system generierter name zugewiesen haben es ein Weg, um entfernen Sie die Einschränkung, ohne zu wissen, seinen Namen. Ist es wahr, dass es immer einen Weg, um zu vermeiden, dass wissen ein system namens constraint-name wenn sich logisch fallenlassen dieser Einschränkung?

Kommentar zu dem Problem
Nur Ihre Neugier zu befriedigen: Die NICHT-NULL-constraint ist der nur constraint-Typ in Oracle, können Sie Sie entfernen, ohne zu wissen, die Einschränkung der name. Alle anderen constraint-Typen, die Sie brauchen zu wissen, der name der Einschränkung. Kommentarautor: Jeffrey Kemp

InformationsquelleAutor der Frage Chris Farmer | 2010-03-29

Schreibe einen Kommentar