达梦数据库中实现某一列的值为另外两列之和(或其他关系,如拼接字符串等),有两种方法:
1.视图
2.触发器
(我只能想到这两种,还想到有其它方法的欢迎交流~)
视图方式:
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(A INT,B INT);
CREATE VIEW V_TEST AS SELECT A,B,NVL(A,0) + NVL(B,0) AS C FROM TEST;
触发器方式:
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(A INT,B INT,C INT);
CREATE OR REPLACE TRIGGER TRI_TEST
AFTER INSERT OR UPDATE OF A,B
ON TEST
REFERENCING OLD ROW AS OLD_V NEW ROW AS NEW_V
FOR EACH ROW
BEGIN
UPDATE TEST SET C = NVL(A,0) + NVL(B,0) WHERE ROWID = :NEW_V.ROWID;
END;
感觉视图是一个比较好的方式,但是如果应用已经开发好了,不方便修改sql语句的情况下,可以选择触发器方式。
-------------20200522,修改了a,b为空的情况----------------