您打算如何在film
表中存储此行总计数的计划?
如果你要用触发器来管理这个,看起来你需要两个触发器。一个用于INSERT,一个用于DELETE。 UPDATE语句不会更改表中的行数。 (请注意,不会为外键操作触发触发器;如果使用DELETE规则定义了外键,则这是一个问题)。触发器不会针对TRUNCATE语句触发。
抛开这些担忧,我们需要在某个地方随时间存储行数。举个例子:
CREATE TABLE rowcount_history_film
(ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
, rowcount INT NOT NULL
, KEY rowcount_history_film_IX1 (ts)
) Engine=MyISAM;
然后我们可以使用触发器插入一行到该表每当一个DML语句在film
表更改的行数:
DELIMITER $$
CREATE TRIGGER film_ad
AFTER DELETE ON film
FOR EACH ROW
BEGIN
INSERT INTO rowcount_history_film (ts, rowcount)
SELECT NOW(), COUNT(*) FROM film;
END$$
CREATE TRIGGER film_ai
AFTER INSERT ON film
FOR EACH ROW
BEGIN
INSERT INTO rowcount_history_film (ts, rowcount)
SELECT NOW(), COUNT(*) FROM film;
END$$
DELIMITER ;
你怎么插入记录他sakila_film桌桌?你是通过存储过程还是通过脚本来做到这一点? – Jaylen 2014-11-25 00:13:15