我有一个包含两个字段的SQL表:“比例”和“说明”。
“比例”列是通过存储过程填充的,是十进制(7,2)字段。如果Proportion <0,我想在“说明”列中输出“负比例”,我想知道这样做的最佳方法是什么。
问题是,“说明”列需要保持可编辑状态(因此,不是计算列)。与之类似,用户仍然需要能够使用自己的文本来更新此列,在某些情况下,它将仅添加到该字段中已经存在的“负比例”文本中。
执行此操作的最佳选择是什么?
答案 0 :(得分:1)
这很棘手。列的默认值不能是其他列的表达式。您可以使用触发器或在应用程序级别实现该功能。
另一种方法是具有“隐藏”列:
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;