更新时间:2022-10-17 09:04:37
试试这个方法
更新学生SET 总计 = 标记 1 + 标记 2 + 标记 3;
***还是创建一个视图
创建视图 vw_student ASSELECT name, mark3, mark2, mark1, mark3 + mark2 + mark1 总共来自学生;
改用它
SELECT * FROM vw_student;
这是两种方法的SQLFiddle演示>
UPDATE:根据您的评论,您可以创建一个触发器(实际上两个用于 INSERT
,第二个用于 UPDATE
)来填充 total
自动列
创建触发器 tg_bi_student在插入学生之前每行SET NEW.total = NEW.mark1 + NEW.mark2 + NEW.mark3;创建触发器 tg_bu_student在学生更新之前每行SET NEW.total = NEW.mark1 + NEW.mark2 + NEW.mark3;
这里是 SQLFiddle 的触发器方法>
第二次更新 由于您实际使用 Oracle,您可以将 total
定义为计算列
CREATE TABLE 学生(名称 VARCHAR2(32),MARK2 号,MARK3 号,标记 1 号,生成的总数始终为(标记 1 + 标记 2 + 标记 3));
您可以通过这种方式更改表的架构
ALTER TABLE student DROP COLUMN total;ALTER TABLE student ADD total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3);
这是SQLFiddle演示
I am having one table named student having the following column names and data's
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
is there any way to add column mark1 and mark2 and mark3 and insert that added values in total can you guys suggest me about this.iam using sqlplus database
Try it this way
UPDATE student
SET total = mark1 + mark2 + mark3;
Better yet just create a view
CREATE VIEW vw_student AS
SELECT name, mark3, mark2, mark1, mark3 + mark2 + mark1 total
FROM student;
and use it instead
SELECT * FROM vw_student;
Here is SQLFiddle demo for both approaches
UPDATE: Based on your comments you can create a trigger (actually two one for INSERT
and the second for UPDATE
) to populate total
column automatically
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;
Here is SQLFiddle for a trigger approach
2ND UPDATE Since you actually using Oracle you can just define total
as a computed column
CREATE TABLE student
(
NAME VARCHAR2(32),
MARK2 NUMBER,
MARK3 NUMBER,
mark1 NUMBER,
total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3)
);
You can change your table's schema this way
ALTER TABLE student DROP COLUMN total;
ALTER TABLE student ADD total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3);
Here is SQLFiddle demo