Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle po aktualizacji wyzwala tworzenie publicznego łącza do bazy danych

Tworzenie łącza do bazy danych w locie wydaje się czymś niezwykłym; Twój schemat powinien być statyczny i stabilny. Jednakże, jeśli musisz, prościej byłoby owinąć aktualizację i łącze w procedurę lub po prostu wydać dwie instrukcje - przypuszczalnie wszystko, co wykonuje aktualizację, i tak jest w miarę kontrolowane, w przeciwnym razie musiałbyś mieć do czynienia z wieloma osobami wyzwalającymi tę wielokrotność razy, co byłoby jeszcze większym bałaganem.

Prawdopodobnie możesz sprawić, by to zadziałało, dodając PRAGMA autonomous_transaction; do wyzwalacza, jak pokazano w przypadku podobnego problemu (tworzenie widoku zamiast linku) w tej odpowiedzi , ale w tej chwili nie jestem w stanie tego przetestować.

create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit 
for each row
DECLARE
    add_link VARCHAR2(200);
    PRAGMA autonomous_transaction;
BEGIN
    ...

Możesz również zmusić wyzwalacz do przesłania zadania asynchronicznego w celu wykonania DDL, jak opisano w tej odpowiedzi i jest więcej przykładów w tej odpowiedzi , gdzie możesz zmienić anonimowy blok zadania, aby wykonać execute immediate .

Prawdopodobnie lepiej byłoby po prostu utworzyć łącza na kilka następnych lat z wyprzedzeniem w oknie obsługi, zgodnie z harmonogramem lub z procedury; zamiast próbować powiązać zmianę schematu ze zmianą danych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. obsługa wielu baz danych dla tych samych klas JPA

  2. Pierwsze kroki z Oracle LiveSQL

  3. Odniesienie SQL dla dziecka + rodzica

  4. Jak pobrać komentarze z Oracle 11g za pomocą JDBC?

  5. Funkcja RPAD() w Oracle