sql - SQL:根据另一列的条件填充表列
问题描述
我有一个包含两个字段的 SQL 表:比例和说明。
比例列通过存储过程填充,是一个十进制 (7,2) 字段。如果比例 < 0,我想将“负比例”输出到解释列,我想知道最好的方法是什么。
问题是,解释列需要保持可编辑状态(因此不是计算列)。例如,用户仍然需要能够使用自己的文本更新此列,在某些情况下,它只会添加到该字段中已经存在的“负比例”文本中。
我这样做的最佳选择是什么?
解决方案
这很棘手。列的默认值不能是其他列的表达式。您可以使用触发器或在应用程序级别实现它。
另一种方法是有一个“隐藏”列:
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;
推荐阅读
- javascript - 加载时未从数据库加载数据(php + ajax)
- c++ - 在 CentOS7 与 g++ 的 DLL 链接后未声明 C++ 函数
- json - Spring 请求返回 json 或 xml 响应
- python - 如何创建趋势线日期与数据(百分比值)
- ballerina - 你如何在 Ballerina 中四舍五入浮点值?
- java - 如何有条件地增加?
- spring - CamelContextStartedEvent 调用了两次
- oracle - 为什么我的 Oracle 客户端安装没有出现在 Windows 控制面板中?
- android - OpenCV 3.4.1 Android SDK 静态库依赖
- php - 如何为 TWIG 渲染页面返回 Content-Length 标头?