我有一个名为student的表,其中包含以下列名和数据
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
是否有任何方法可以添加列mark1和mark2以及mark3并插入添加的值总数你们可以建议我使用sqlplus数据库这个。使用sqlplus数据库
答案 0 :(得分:5)
以这种方式试试
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 演示
更新:根据您的评论,您可以创建一个触发器(实际上是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 2ND UPDATE 由于您实际使用的是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 演示