Вставьте значение по умолчанию в ненулевой столбец, если значение равно нулю

У меня есть столfoo, который имеетNOT NULL столбец с именем по умолчанию:message

CREATE TABLE foo(
    id int PRIMARY KEY,
    message varchar(64) NOT NULL DEFAULT 'Hello'
)

Есть хранимая процедураbar который вставляет в:foo

CREATE PROCEDURE bar(
    i_id int,
    i_message varchar(64)
)
BEGIN

    -- other logic

    IF i_message IS NOT NULL THEN
        INSERT INTO foo (id, message) VALUES (i_id, i_message);
    ELSE
        INSERT INTO foo (id, message) VALUES (i_id, DEFAULT);
        -- could also be: INSERT INTO foo (id) VALUES (i_id);
    END IF;
 END;

Вы можете видеть, я должен условно перейти, чтобы моя вставка использовала значение по умолчанию, еслиi_message нулевой. Тот'хорошо только для одного столбца, но еслиfoo было намного большеNOT NULL DEFAULT столбцы - синтаксис будет громоздким.

Есть ли синтаксис, который я могу использовать, чтобы указать, что вставленное значение должно возвращаться к значению по умолчанию, если ноль? Я попробовал следующее, но по понятным причинам получил синтаксические ошибки:

INSERT INTO foo (id, message) VALUES (i_id, COALESCE(i_message, DEFAULT));
INSERT INTO foo (id, message) VALUES (i_id, IFNULL(i_message, DEFAULT));

Ответы на вопрос(1)

Ваш ответ на вопрос