Nie jest to możliwe, jak opisano w dynamicznej instrukcji sql / Prepared Statement. Spowoduje to wygenerowanie Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger
po próbie nawet CREATE TRIGGER
.
Najbardziej zbliżonym podejściem do automatyzacji jest użycie CREATE EVENT
. Zdarzenia to zaplanowane, zapisane programy, które działają zgodnie z wybranym przez Ciebie harmonogramem/interwałem. Przedziały to:
Możesz ustawić „flagę”, że tak powiem, w wierszu, na przykład w tabeli, którą przedstawiasz powyżej, która ma wyzwalacz po wstawieniu. Zdarzenie może następnie wykonać Przygotowana instrukcja dynamicznie i uruchom go.
Zobacz moją odpowiedź tutaj na Zarządzanie wydarzeniami .
Muszę powiedzieć, że nawet jeśli bierzesz udział w wydarzeniu, to, co proponujesz, to prawie Zawsze oznaka słabego projektu schematu, który nie wytrzymywałby dobrze oceny wzajemnej.
Powodem, dla którego nie wolno używać dynamicznego sql i Prepared Stmt, jest to, że wyzwalacz musi być szybki, a nawet DDL może zostać przemycony do łańcucha i wykonany. I instrukcje DDL, takie jak ALTER TABLE
są niedozwolone w wyzwalaczach (dosłowne uruchomienie może zająć kilka godzin).
Twój schemat może równie dobrze mieć jedną tabelę współdzieloną z kolumną ven_code
będąca kolumną różnicującą. Zamiast tego zdecydowałeś się utworzyć nowe tabele dla każdego ven_code
. To zazwyczaj jest kiepski wybór projektu i wydajności.
Jeśli potrzebujesz pomocy przy projektowaniu schematu, z przyjemnością porozmawiam o tym na czacie.