Insira o padrão na coluna não nula se o valor for nulo

Eu tenho uma mesafoo, que tem umNOT NULL coluna com um padrão chamadomessage:

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

Existe um procedimento armazenadobar que inserefoo:

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;

Você pode ver, eu tenho que ramificar condicionalmente para a minha inserção para usar o padrão sei_message é nulo. Isso é bom para apenas uma coluna, mas considere sefoo tinha muito maisNOT NULL DEFAULT colunas - a sintaxe seria maneira difícil de lidar.

Existe uma sintaxe que eu possa usar para especificar que um valor inserido deve cair para o padrão se nulo? Eu tentei o seguinte, mas compreensivelmente tenho erros de sintaxe:

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

questionAnswers(1)

yourAnswerToTheQuestion