在另一列中插入添加的列值

时间:2013-12-11 08:10:38

标签: sql oracle sqlplus

我有一个名为student的表,其中包含以下列名和数据

NAME   MARK2      MARK3      mark1      total  
surya  85         95         123        
priya   75         95         25         
vishnu   88         75        27  

是否有任何方法可以添加列mark1和mark2以及mark3并插入添加的值总数你们可以建议我使用sqlplus数据库这个。使用sqlplus数据库

1 个答案:

答案 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 演示