如何创建VIEW,以便在更改基表时它们也会改变?

时间:2011-03-31 15:56:44

标签: mysql

有没有办法链接两个表,所以当我改变基表时,视图也会改变?这样的事情:

CREATE TABLE t (qty INT, price INT);

INSERT INTO t VALUES(3, 50);

CREATE VIEW v AS SELECT * FROM t;

SELECT * FROM v;
+------+-------+
| qty  | price |
+------+-------+
|    3 |    50 |
+------+-------+

ALTER TABLE t ADD COLUMN comm INT;

SELECT * FROM t;
+------+-------+------+
| qty  | price | comm |
+------+-------+------+
|    3 |    50 | NULL |
+------+-------+------+

SELECT * FROM v;
+------+-------+
| qty  | price |
+------+-------+
|    3 |    50 |
+------+-------+

最后两个SELECT-s应该相等。

PS。我知道MySQL说:

  

视图定义在创建时被“冻结”,因此之后对基础表的更改不会影响视图定义。

也无法创建触发器,因为触发事件不包括ALTER TABLE

1 个答案:

答案 0 :(得分:1)

manual

中所述,您需要在更改表时重新创建视图
  

视图定义“冻结”在   创作时间,所以改变了   后面的基础表没有   影响视图定义。对于   例如,如果视图定义为   SELECT *在表上,添加了新列   以后不要成为一部分   观点。

掉落&重新创建视图或ALTER视图。