sql >> Databasteknik >  >> RDS >> Mysql

I MySQL trigger, är det möjligt att ställa in en användarvariabel med NEW.col och använda den i uppdateringsfrågan?

Detta är inte möjligt som beskrivs med dynamisk sql / Prepared Statement. Det skulle generera Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger vid försöket att till och med CREATE TRIGGER .

Det närmaste du kan komma automatisering är att använda CREATE EVENT . Händelser är schemalagda lagrade program som körs enligt det schema/intervall du väljer. Intervallerna är:

Du kan sätta en "flagga" så att säga på en rad, till exempel tabellen som du visar ovan som har utlösaren efter infogning. Eventet kunde sedan utföra Förberedda uttalanden dynamiskt och kör det.

Se mitt svar här på Event Management .

Jag måste säga att även om du deltar i ett evenemang så är det du föreslår nästan alltid tecknet på en dålig schemadesign som inte skulle hålla bra för referentgranskning.

En anledning till att dynamisk sql och en Prepared Stmt inte tillåts är för att triggern måste vara snabb, och till och med DDL kan smygas in i strängen och exekveras. Och DDL-stmts som ALTER TABLE är inte tillåtna i utlösare (de kan ta timmar att köra bokstavligen).

Ditt schema kan lika gärna ha en tabell delad med kolumnen ven_code vara differentiatorkolumnen. Istället valde du att skapa nya tabeller för varje ven_code . Det är vanligtvis ett dåligt val av design och prestanda.

Om du behöver hjälp med schemadesign, chattar jag gärna om det med dig i ett chattrum.



  1. SQLite JSON_GROUP_OBJECT()

  2. Hur man automatiserar pivottabellsfrågor i MySQL

  3. Anropa funktion från DLL (c#) i Oracle Forms

  4. Lägg till sökningssortering och sök med jquery datatable