Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете OLD стойност в MySQL Trigger СЛЕД изявление за актуализиране

В UPDATE TRIGGER , можете да използвате OLD ключова дума за достъп до данните в реда, които се заменят от актуализацията. NEW ключова дума позволява достъп до входящите данни за ред, които ще замени стария ред, ако е успешен.

Пример за UPDATE тригерът е:

CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
    FOR EACH ROW
    BEGIN
       IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
         INSERT INTO AuditSomeTable(ID, LastChangedBy) 
         VALUES (OLD.ID, OLD.LastChangedBy);
       END IF;
    END;

SQLPiddle тук

В зависимост от типа на създадения тригер, OLD и NEW редовете може да не са достъпни за вас:

ВМЪКНЕТЕ ЗАПУСКВАНЕ

  • Достъп до NEW само псевдоредове.

ЗАПУСКВАНЕ НА АКТУАЛИЗИРАНЕ

  • Достъп до NEW и OLD псевдоредове

ИЗТРИВАНЕ НА ТРИГЕРА

  • Достъп само до OLD псевдоредове

т.е. няма OLD ред на INSERT тригер и няма NEW ред на DELETE задействане.

Въпрос на ОП

OP не е предоставил действителния код и съобщението за грешка, посочено в коментарите:

показва, че ОП неволно е създал INSERT TRIGGER а не UPDATE TRIGGER както беше посочено във въпроса. INSERT тригерът няма OLD псевдо таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да внедря система за маркиране, подобна на SO в php/mysql?

  2. Laravel 5.5 Грешка Базовата таблица или изглед вече съществува:1050 Таблица „потребители“ вече съществува

  3. MySQL MAX_JOIN_SIZE грешки

  4. MySQL AS ключова дума

  5. RegEx с preg_match за намиране и замяна на ПОДОБЕН низ