#mysql #triggers #null #default #default-value
#mysql #запускает #null #По умолчанию #значение по умолчанию
Вопрос:
Я хотел триггер mysql для определенного поля. Когда в это поле вставляется NULL
значение, я хотел бы заменить его значением по умолчанию. Я знаю, что этот код неверен, но это дало бы вам представление о том, чего я хочу.
CREATE TABLE IF NOT EXISTS example(
id INT NOT NULL AUTO_INCREMENT,
parent_id INT NOT NULL
);
CREATE TRIGGER insert_parentId_trigger BEFORE INSERT ON example
FOR EACH ROW BEGIN
IF parent_id = NULL THEN
SET parent_id = 0;
END IF
END;
Комментарии:
1. почему вы не ставите 0 в качестве значения по умолчанию?
Ответ №1:
Объявите этот столбец с помощью not null default 0
вместо того, чтобы использовать trigger позже.
Когда mysql уже обрабатывает это условие, почему нам нужно использовать trigger здесь?
Вы можете использовать команду alter, чтобы обновить определение вашего столбца
ALTER TABLE example MODIFY parent_id INT(11) NOT NULL DEFAULT 0
Ответ №2:
Я согласен с примером, когда значение Null упрощенно устанавливается равным 0, тогда использование «По умолчанию» — это нормально, но что, если вам нужно значение, которое является переменной и не может быть значением по умолчанию? Например:
IF `Creator` Is NULL THEN
SET `Creator` = current_user();
END IF
Для этого типа варианта использования или чего-то, что требует поиска, вы не сможете использовать Default.
Ответ №3:
Кроме того, что Шакти Сингх абсолютно права со значением по умолчанию, вам нужно сравнить NULL
значения с IS
вместо =
Это должно быть IF parent_id IS NULL