Предположим, у меня есть два определенных поля в таблице sql, to_change и not_null .

Как мне действовать, если я хочу создать триггер sql, который будет превращать to_change в 5 всякий раз, когда not_null получает обнуление < / strong>?

0
0LLiena 19 Мар 2014 в 01:28

1 ответ

Лучший ответ

Вы можете сделать что-то вроде этого:

CREATE TRIGGER change_field_if_other_field_is_null 
BEFORE UPDATE ON your_table
FOR EACH ROW SET NEW.to_change = IF (NEW.isnt_null IS NULL, 5, NEW.to_change);

В каждом операторе UPDATE этот триггер изменяет поле "to_change" на 5, когда другое поле устанавливается на NULL.

Обратите внимание, что вам необходимо создать аналогичный триггер BEFORE INSERT, если вы хотите, чтобы эта логика применялась и для вновь вставленных строк.

0
Kaii 19 Мар 2014 в 01:41
Ты @kaii! как насчет того, чтобы изменить другое поле? CREATE TRIGGER change_field_if_other_field_is_null BEFORE UPDATE ON your_table FOR EACH ROW SET NEW.to_change = IF (NEW.isnt_null IS NULL, 5, NEW.to_change), NEW.another_field = IF(NEW.isnt_null IS NULL,5,NEW.another_field);?
 – 
0LLiena
19 Мар 2014 в 02:13