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

0 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数据库这个.

pet*_*erm 5

试试这种方式

UPDATE student
   SET total = mark1 + mark2 + mark3;
Run Code Online (Sandbox Code Playgroud)

更好的是,只需创建一个视图

CREATE VIEW vw_student AS
SELECT name, mark3, mark2, mark1, mark3 + mark2 + mark1 total
  FROM student;
Run Code Online (Sandbox Code Playgroud)

并改为使用它

SELECT * FROM vw_student;
Run Code Online (Sandbox Code Playgroud)

这是两种方法的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;
Run Code Online (Sandbox Code Playgroud)

这是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)
);
Run Code Online (Sandbox Code Playgroud)

您可以通过这种方式更改表的架构

ALTER TABLE student DROP COLUMN total;
ALTER TABLE student ADD total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3);
Run Code Online (Sandbox Code Playgroud)

这是SQLFiddle演示