达梦中实现某一列的值为另外两列之和

达梦数据库中实现某一列的值为另外两列之和(或其他关系,如拼接字符串等),有两种方法:

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为空的情况----------------

你可能感兴趣的:(达梦数据库,SQL,达梦数据库)