sql >> Databáze >  >> RDS >> Oracle

Oracle po aktualizaci spustí vytvoření odkazu na veřejnou databázi

Vytváření odkazu na databázi za chodu se zdá jako neobvyklá věc; vaše schéma by mělo být obecně statické a stabilní. Pokud však musíte, bylo by jednodušší zabalit aktualizaci a odkaz do procedury, nebo jen vydat dvě prohlášení – pravděpodobně vše, co aktualizaci provede, je tak jako tak docela kontrolováno, jinak byste se museli vypořádat s více lidmi, kteří spouštějí toto vícenásobné časy, což by byl ještě větší průšvih.

Pravděpodobně to můžete provést přidáním PRAGMA autonomous_transaction; k vašemu spouštěči, jak je ukázáno u podobného problému (vytvoření zobrazení místo odkazu) v této odpovědi , ale v tuto chvíli nejsem schopen to otestovat.

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

Můžete také nastavit spouštěč, aby odeslal asynchronní úlohu k provedení DDL, jak je popsáno v této odpovědi , a další příklad je v této odpovědi , kde byste změnili anonymní blok úlohy tak, aby se vaše execute immediate .

Pravděpodobně by bylo lepší vytvořit odkazy na několik příštích let předem během období údržby, podle plánu nebo z postupu; spíše než se snažit přidružit změnu schématu ke změně dat.




  1. Postup s parametrem IN

  2. Je MySQL odolnější vůči útoku SQL injection než PostgreSQL (v Perl/DBI)?

  3. MYSQL auto_increment_increment

  4. Nesrovnalosti Oracle SQL:COUNT(*) vs. skutečná sada výsledků