Это сложно. Значения по умолчанию для столбцов не могут быть выражениями с другими столбцами. Вы можете реализовать это с помощью триггера или на уровне приложения.
Другим способом было бы иметь «скрытый» столбец:
create table t (
proportion decimal(10, 2),
_explanation varchar(255),
explanation as (case when _explanation is null and proportion < 0 then 'Negative proportion' end)
);
Это не требует триггеров, но вам нужно вставить в _explanation
. Вы можете реализовать аналогичную логику, используя представление:
create table t (
proportion decimal(10, 2),
explanation varchar(255)
);
create view v_t as
select proportion,
(case when explanation is null and proportion < 0 then 'Negative proportion' end) as explanation
from t;