我有具有下列列名和數據的命名學生一個表另一列中插入添加的列值
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
有沒有什麼辦法來添加列MARK-1和MARK2和MARK3和插入,在累計實現增加值你們可以用sqlplus數據庫建議我約this.iam
我有具有下列列名和數據的命名學生一個表另一列中插入添加的列值
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
有沒有什麼辦法來添加列MARK-1和MARK2和MARK3和插入,在累計實現增加值你們可以用sqlplus數據庫建議我約this.iam
嘗試這種方式
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的觸發方式
月2日更新既然你實際使用的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演示
,這將是對現有數據的,我需要三個值添加到工作在添加新行時自動添加總計必須自行添加 – vishnupriya
觸發器的好處 – DaImTo
您的問題標有用於MySQL服務器的「mysql」標籤。但是你從Oracle數據庫顯示的錯誤是完全不同的產品! – peterm
是的,你可以更新你的表,並設置總= MARK-1 + 2 + 3 – uvais