2

晚上,

我目前正在运行此查询:

SELECT `id`, `type`, `controller` FROM `urls` WHERE `url` = :url;
UPDATE `urls` SET `views` = `views` + 1 WHERE `url` = :url;

我在加载页面并将视图列增加 1 时运行它。但是,我很想知道是否有一种方法(可能使用触发器之类的东西)可以自动增加视图列。

4

1 回答 1

2

我找不到确切的重复项,但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语法

于 2012-05-18T06:10:51.267 回答