![](/img/trans.png)
[英]Inserting values into a column by derived from another column in the same table?
[英]inserting added column values in another column
我有一个名为student的表,具有以下列名和数据
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
有什么办法可以添加列mark1和mark2和mark3并插入总共添加的值,你们可以建议我有关此问题。
这样尝试
UPDATE student
SET total = mark1 + mark2 + mark3;
更好,只是创建一个视图
CREATE VIEW vw_student AS
SELECT name, mark3, mark2, mark1, mark3 + mark2 + mark1 total
FROM student;
并用它代替
SELECT * FROM vw_student;
这是两种方法的SQLFiddle演示
UPDATE:根据您的注释,您可以创建一个触发器(实际上是两个,用于INSERT
,第二个用于UPDATE
),以自动填充total
列
CREATE TRIGGER tg_bi_student
BEFORE INSERT ON student
FOR EACH ROW
SET NEW.total = NEW.mark1 + NEW.mark2 + NEW.mark3;
CREATE TRIGGER tg_bu_student
BEFORE UPDATE ON student
FOR EACH ROW
SET NEW.total = NEW.mark1 + NEW.mark2 + NEW.mark3;
这是用于触发方法的SQLFiddle
第二次更新由于您实际使用的是Oracle,因此您可以将total
定义为一个计算列
CREATE TABLE student
(
NAME VARCHAR2(32),
MARK2 NUMBER,
MARK3 NUMBER,
mark1 NUMBER,
total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3)
);
您可以通过这种方式更改表的架构
ALTER TABLE student DROP COLUMN total;
ALTER TABLE student ADD total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3);
这是SQLFiddle演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.