Създаването на връзка към база данни в движение изглежда необичайно нещо; вашата схема обикновено трябва да е статична и стабилна. Въпреки това, ако трябва, би било по-лесно да опаковате актуализацията и връзката в процедура или просто да издадете две изявления - предполага се, че каквото и да изпълнява актуализацията, така или иначе е доста контролирано, в противен случай ще трябва да се справите с множество хора, задействащи това множество пъти, което би било още по-голяма бъркотия.
Вероятно можете да направите това да работи, като добавите PRAGMA autonomous_transaction;
към вашия тригер, както е показано за подобен проблем (създаване на изглед вместо връзка) в този отговор , но не съм в състояние да тествам това в момента.
create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit
for each row
DECLARE
add_link VARCHAR2(200);
PRAGMA autonomous_transaction;
BEGIN
...
Можете също така да накарате тригера да изпрати асинхронна задача за изпълнение на DDL, както е описано в този отговор , и има още един пример в този отговор
, където бихте променили анонимния блок на задачата, за да направите вашето execute immediate
.
Вероятно би било по-добре просто да създадете връзките за следващите няколко години предварително по време на прозорец за поддръжка, или по график, или от процедура; вместо да се опитвате да свържете промяна на схема с промяна на данни.