[英]Inserting values into a column by derived from another column in the same table?
[英]inserting added column values in another column
我有一個名為student的表,具有以下列名和數據
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
有什么辦法可以添加列mark1和mark2和mark3並插入總共添加的值,你們可以建議我有關此問題。
這樣嘗試
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
第二次更新由於您實際使用的是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演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.