簡體   English   中英

在mysql中創建表,其中一列包含另外兩列的值的總和

[英]Create table in mysql with one column containing sum of another two columns value

是否有可能在mysql中創建一個包含兩列值的列的表? 這樣的事情:

create table test1 (
    number1 int,
    number2 int,
    total int DEFAULT (number1+number2)
);

或者像這樣:

CREATE TABLE `Result` (
    `aCount` INT DEFAULT 0,
    `bCount` INT DEFAULT 0,
    `cCount` =  `aCount` + `bCount`
);

不可能完全這樣做,但您可以根據組合它們的查詢創建視圖:

CREATE VIEW `my_wacky_view` AS
SELECT `number1`, `number2`, `number1` + `number2` AS `total`
FROM `test1`;

我會避免實際將組合數據存儲在表中,除非您將運行大量將在其WHERE子句中引用組合數據的查詢。

您可以在表上創建一個觸發器,以便MySQL計算並在每次在test1表上發生INSERT時自動插入該列值。 制作表格:

create table test1 (
    number1 int,
    number2 int,
    number3 int
);

然后創建一個觸發器

CREATE TRIGGER triggername AFTER INSERT
ON test1
FOR EACH ROW
UPDATE test1 SET NEW.number3=NEW.number1+NEW.number2

關於觸發器的MySQL文檔: http//dev.mysql.com/doc/refman/5.0/en/create-trigger.html

如果您希望行發生UPDATES,請確保添加ON UPDATE觸發器。

我也有這個問題。 從Edgar Velasquez在這里的回答,以及這個問題的答案,我偶然發現了這個咒語:

CREATE TRIGGER insert_t BEFORE INSERT
ON test1
FOR EACH ROW
SET NEW.number3=NEW.number1+NEW.number2;

CREATE TRIGGER insert_t_two BEFORE UPDATE
ON test1
FOR EACH ROW
SET NEW.number3=NEW.number1+NEW.number2;

這適用於MySQL 5.6.22。

小修復:

CREATE TRIGGER triggername BEFORE INSERT
ON test1
FOR EACH ROW
SET NEW.number3=NEW.number1+NEW.number2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM