Mam bazę danych, która ma ograniczenie NOT NULL na polu i chcę usunąć to ograniczenie. Czynnikiem komplikującym jest fakt, że to ograniczenie ma nazwę zdefiniowaną przez system, a nazwa tego ograniczenia różni się w przypadku serwera produkcyjnego, serwera integracyjnego i różnych baz danych deweloperów. Nasz obecny proces polega na sprawdzaniu skryptów zmian, a zautomatyzowane zadanie wykonuje odpowiednie zapytania za pośrednictwem sqlplus względem docelowej bazy danych, więc wolałbym rozwiązanie, które można po prostu wysłać bezpośrednio do sqlplus.
W mojej własnej bazie danych SQL do usunięcia będzie wyglądał następująco:
alter table MYTABLE drop constraint SYS_C0044566
Widzę ograniczenie, kiedy odpytuję all_constraints
widok:
select * from all_constraints where table_name = 'MYTABLE'
ale nie jestem pewien, jak do pracy z SEARCH_CONDITION
„s LONG
Typ danych lub w jaki sposób najlepiej dynamicznie usunąć wyglądał się ograniczenia nawet po znam jego imienia.
Jak więc mogę stworzyć skrypt zmiany, który może porzucić to ograniczenie na podstawie tego, czym ono jest, a nie jego nazwą?
EDYCJA: Odpowiedź @ Allana jest dobra, ale obawiam się (z powodu mojego braku wiedzy na temat Oracle), że może nie być uniwersalną prawdą, że jakiekolwiek ograniczenie, które może mieć nazwę wygenerowaną przez system, będzie wiązało się z tym sposobem usunięcia ograniczenie bez znajomości jego nazwy. Czy to prawda, że zawsze będzie sposób na uniknięcie konieczności znajomości nazwy ograniczenia o nazwie systemowej podczas logicznego usuwania tego ograniczenia?