我通过将用户访问记录到数据库中来跟踪用户对网站的访问。访问的冷却时间为6小时。出于这个原因,我只想在用户上次访问超过6小时前的当前网站时向表visits
添加一行。如果上次访问时间少于6小时,则不做任何事情。仅在SELECT返回行时才INSERT
我环顾四周寻找答案,发现很多相当类似的问题,但没有一个为我工作。
这是我最后一次尝试查询:
INSERT INTO visits (user_id, web_id)
SELECT (66, 2) FROM websites WHERE NOT EXISTS (
SELECT 1 FROM visits WHERE web_id = 2 and user_id = 66 and added_on >= NOW() - INTERVAL 6 HOUR
)
我得到一个语法错误附近WHERE NOT EXISTS
。
是的,它做到了。谢谢。 – Chris
顺便说一句,你能解释一下你的意思吗?用触发器而不是应用程序强制执行规则? – Chris
@Chris。 。 。你可以在表上定义一个'insert'触发器,这样无效的插入会产生一个错误。那么你可以保证桌子符合这些条件。 –