3

是否可以在 MySQL 结构中创建一个自动汇总其他两列的列?

因此,如果我有一个名为 TABLE 的表:

Column A, Column B, and Column C.

我想Column C自动总结Column AColumn B

那可能吗?

如果A改变,C改变。

如果有可能的话。如果你有任何例子。

4

4 回答 4

3

您可以使用 VIEW 实现此目的:

CREATE TABLE table1 (a INT, b INT);  

CREATE
  OR replace VIEW V_TABLE AS
SELECT a, b, a + b AS c
FROM table1;

sqlfiddle

于 2013-10-22T00:29:22.867 回答
1

使用触发器:

DELIMITER $$
CREATE TRIGGER myTableAutoSum
BEFORE INSERT ON `myTable` FOR EACH ROW
BEGIN
    SET NEW.ColumnC = NEW.ColumnA + NEW.ColumnB;
END;
$$
DELIMITER ;

然后这个查询:

INSERT INTO myTable (ColumnA, ColumnB) values(1, 1), (2, 3), (1, 4);

将导致行:

ColumnA  ColumnB  ColumnC
1        1        2
2        3        5
1        4        5
于 2013-10-22T00:33:50.870 回答
1

您需要阅读有关触发器http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html

那么您将能够在插入之前和更新之前创建触发器,这将在 C 列中保持正确的值

于 2013-10-22T00:22:42.423 回答
1

MySQL 不直接支持计算列。您可以使用触发器来计算列,但您始终可以在查询中检索计算值:

例如:

SELECT ColumnA, ColumnB, (ColumnA+ColumnB) as ColumnC from myTable
于 2013-10-22T00:25:39.167 回答