Запустите то, что представляют new.filed и old.field

0

Я пытаюсь узнать, что представляют new.field и old.field

Предположим, что мы используем триггер ПОСЛЕ ОБНОВЛЕНИЯ

В строке/записи мы полей a, b, c

c обновляется, поэтому он имеет значение перед новой записью old.c и новым значением new.c

если я хочу ссылаться на поданную а, то она old.a или new.a или делает какую-либо разницу

Теги:

1 ответ

0

В триггере обновления поля, которые не изменяются при обновлении, должны иметь значения OLD.field и NEW.field.

из документации

Внутри тела триггера ключевые слова OLD и NEW позволяют вам получать доступ к столбцам в строках, затронутых триггером. OLD и NEW - это расширения MySQL для триггеров; они не чувствительны к регистру.

В триггере INSERT можно использовать только имя NEW.col_name; нет старой строки. В триггере DELETE может использоваться только имя OLD.col_name; нет новой строки. В триггере UPDATE вы можете использовать имя OLD.col_name для ссылки на столбцы строки до ее обновления и NEW.col_name, чтобы ссылаться на столбцы строки после ее обновления.

Столбец с OLD - только для чтения. Вы можете обратиться к нему (если у вас есть привилегия SELECT), но не изменять его. Вы можете обратиться к столбцу с именем NEW, если у вас есть привилегия SELECT. В триггере BEFORE вы также можете изменить его значение с помощью SET NEW.col_name = value, если у вас есть привилегия UPDATE. Это означает, что вы можете использовать триггер для изменения значений, которые нужно вставить в новую строку или использовать для обновления строки. (Такой оператор SET не влияет на триггер AFTER, потому что изменение строки уже произошло.)

  • 0
    Спасибо, я потратил время на его поиск, но не смог его найти.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню