триггер mysql при вставке нулевого значения - PullRequest
1 голос
/ 28 апреля 2011

Я хотел запустить 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;

Ответы [ 3 ]

4 голосов
/ 28 апреля 2011

Объявите этот столбец с not null default 0 вместо использования триггера позже.

Когда mysql уже обрабатывает это условие, зачем нам здесь использовать триггер?

Вы можете использовать команду alter, чтобы обновить определение столбца

ALTER TABLE example MODIFY parent_id INT(11) NOT NULL DEFAULT 0
2 голосов
/ 24 апреля 2013

Я согласен с примером значения Null, которое упрощенно установлено в 0, тогда использование «по умолчанию» - это нормально, но что, если вам нужно значение, которое является переменным и не может быть значением по умолчанию?Например:

IF `Creator` Is NULL THEN
   SET `Creator` = current_user();
END IF

Для этого типа использования или для чего-то, что требует поиска, вы не сможете использовать По умолчанию.

0 голосов
/ 28 апреля 2011

Кроме того, Шакти Сингх совершенно прав со значением по умолчанию, вы должны сравнить NULL значения с IS вместо =
Это должно быть IF parent_id IS NULL

...