sql >> Databáze >  >> RDS >> Mysql

Je možné předat NOVÉ a STARÉ tabulky ze spouštěče do procedury v MySQL?

Každé pole můžete explicitně předat:

CALL logChanges(OLD.colA, OLD.colB, NEW.colA, NEW.colB);

Nebo pokud logChanges musí být dostatečně obecný, aby dokázal zpracovat taková volání z různých tabulek, bylo by možné zřetězit hodnoty polí do jednoho řetězce pomocí vhodného oddělovače (např. oddělovač jednotek ):

CALL logChanges(CONCAT_WS(CHAR(31), OLD.colA, old.colB),
                CONCAT_WS(CHAR(31), NEW.colA, NEW.colB));

Nebo pokud je třeba zachovat datové typy, je možné vložit záznamy do dočasného úložiště, ze kterého logChanges čte.



  1. Proč ovlivněné řádky vracejí 0 při úspěšné aktualizaci/smazání?

  2. Co je PostgreSQL?

  3. Jak porovnat řetězec verze (x.y.z) v MySQL?

  4. Jak hodnoty NULL ovlivňují výkon při vyhledávání v databázi?