Isso não é possível conforme descrito com SQL dinâmico / Declaração Preparada. Isso geraria
Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger
na tentativa de até CREATE TRIGGER
. O mais próximo que você pode chegar da automação é usar
CREATE EVENT
. Eventos são programas armazenados agendados que são executados no agendamento/intervalo de sua escolha. Os intervalos são:Você pode definir um "sinalizador" por assim dizer em uma linha, como a tabela que você está descrevendo acima que tem o gatilho Após a inserção. O evento poderia então realizar a Declaração Preparada dinamicamente e execute-o.
Veja minha resposta aqui em Gerenciamento de eventos .
Eu tenho que dizer que mesmo se executado em um evento, o que você está propondo é quase Sempre o sinal de um design de esquema ruim que não resistiria bem à revisão por pares.
Uma razão pela qual o sql dinâmico e um Prepared Stmt não são permitidos é porque o gatilho precisa ser rápido, e até mesmo o DDL pode ser inserido na string e executado. E stmts DDL como
ALTER TABLE
não são permitidos em gatilhos (eles podem levar horas para serem executados literalmente). Seu esquema também pode ter uma tabela compartilhada com uma coluna
ven_code
sendo a coluna diferenciadora. Em vez disso, você optou por criar novas tabelas para cada ven_code
. Isso normalmente é uma escolha ruim de design e desempenho. Se você precisar de ajuda com o design do esquema, ficarei feliz em conversar sobre isso com você em uma sala de bate-papo.