sql >> Database teknologi >  >> RDS >> Mysql

I MySQL trigger, er det muligt at indstille en brugervariabel med NEW.col og bruge den i opdateringsforespørgsel?

Dette er ikke muligt som beskrevet med dynamisk sql / Prepared Statement. Det ville generere Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger ved forsøget på selv at CREATE TRIGGER .

Det tætteste du kan komme på automatisering er at bruge CREATE EVENT . Begivenheder er planlagte lagrede programmer, der kører efter den tidsplan/interval, du vælger. Intervallerne er:

Du kan sætte et "flag" så at sige på en række, som f.eks. den tabel, du afbilder ovenfor, der har udløseren efter indsættelse. Hændelsen kunne derefter udføre den Forberedt erklæring dynamisk og eksekver det.

Se mit svar her på Event Management .

Jeg må sige, at selvom du deltager i en begivenhed, er det, du foreslår, næsten altid tegnet på et dårligt skemadesign, der ikke ville holde til peer review.

En grund til, at den dynamiske sql og en Prepared Stmt ikke er tilladt, er fordi triggeren skal være hurtig, og endda DDL kunne sniges ind i strengen og udføres. Og DDL-stmts som ALTER TABLE er ikke tilladt i triggere (det kan tage timer at køre bogstaveligt talt).

Dit skema kunne lige så godt have én tabel delt med en kolonne ven_code være differentiatorkolonnen. I stedet valgte du at oprette nye tabeller for hver ven_code . Det er typisk et dårligt valg af design og ydeevne.

Hvis du har brug for hjælp til skemadesign, chatter jeg gerne om det med dig i et chatrum.



  1. MySQL har to forskellige adgangskoder?

  2. Vælg rækkeceller som nye kolonner

  3. Sådan finder du alle tidsstempelværdiernes interval med hvert minut mellem de to tidsstempelposter i min sql-database

  4. Design af en database:Hvilken metode er bedst?