Wstaw domyślną do kolumny nie pustej, jeśli wartość jest null

Mam stolikfoo, który maNOT NULL kolumna o nazwie domyślnejmessage:

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

Istnieje procedura składowanabar to wstawiafoo:

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;

Widzisz, muszę warunkowo rozgałęzić, aby moja wstawka użyła domyślnej, jeślii_message ma wartość null. To dobrze w przypadku tylko jednej kolumny, ale rozważ, czyfoo miał wiele więcejNOT NULL DEFAULT kolumny - składnia byłaby nieporęczna.

Czy istnieje składnia, której mogę użyć, aby określić, że wstawiona wartość powinna wrócić do wartości domyślnej, jeśli jest pusta? Próbowałem następujących, ale zrozumiałych, błędów składniowych:

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