Criar um link de banco de dados em tempo real parece uma coisa incomum de se fazer; seu esquema geralmente deve ser estático e estável. No entanto, se você precisar, seria mais simples envolver a atualização e o link em um procedimento, ou apenas emitir duas instruções - presumivelmente, o que quer que execute a atualização seja razoavelmente controlado de qualquer maneira, caso contrário, você teria que lidar com várias pessoas acionando esse múltiplo vezes, o que seria ainda mais confuso.
Você provavelmente pode fazer isso funcionar adicionando
PRAGMA autonomous_transaction;
ao seu acionador, conforme demonstrado para um problema semelhante (criar uma visualização em vez de um link) nesta resposta , mas não estou em condições de testar isso no momento. create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit
for each row
DECLARE
add_link VARCHAR2(200);
PRAGMA autonomous_transaction;
BEGIN
...
Você também pode fazer com que o gatilho envie um trabalho assíncrono para executar o DDL, conforme descrito nesta resposta , e há mais um exemplo nesta resposta , onde você alteraria o bloco anônimo do trabalho para fazer seu
execute immediate
. Provavelmente seria melhor apenas criar os links para os próximos anos com antecedência durante uma janela de manutenção, ou em uma programação, ou a partir de um procedimento; em vez de tentar associar uma alteração de esquema a uma alteração de dados.