晚上,
我目前正在运行此查询:
SELECT `id`, `type`, `controller` FROM `urls` WHERE `url` = :url;
UPDATE `urls` SET `views` = `views` + 1 WHERE `url` = :url;
我在加载页面并将视图列增加 1 时运行它。但是,我很想知道是否有一种方法(可能使用触发器之类的东西)可以自动增加视图列。
我找不到确切的重复项,但Mysql PDO 中“RETURNING”子句的语法和Mysql 返回子句等效项可以为您提供所需的答案。
MySQL 没有等效的 Oracle 和 PostgreSQLsreturning into
子句。您必须使用两个单独的语句。
如果您希望进行大量更新,那么将视图数量保留在单独的表中可能会更好(有条件,可能不会),尤其是当您没有在查询中返回视图计数时。类似于以下内容:
insert into url_views values(url);
select `id`, `type`, `controller` from `urls` where `url` = :url;
然后如果您需要查看次数:
select count(*)
from url_views
where url = :url
或使用 MySQLsinsert ... select
语法。