2013-12-11 27 views
0

我有具有下列列名和數據的命名學生一個表另一列中插入添加的列值

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

有沒有什麼辦法來添加列MARK-1和MARK2和MARK3和插入,在累計實現增加值你們可以用sqlplus數據庫建議我約this.iam

+1

是的,你可以更新你的表,並設置總= MARK-1 + 2 + 3 – uvais

回答

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演示兩種方法的


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

+0

,這將是對現有數據的,我需要三個值添加到工作在添加新行時自動添加總計必須自行添加 – vishnupriya

+0

觸發器的好處 – DaImTo

+0

您的問題標有用於MySQL服務器的「mysql」標籤。但是你從Oracle數據庫顯示的錯誤是完全不同的產品! – peterm

相關問題