MySQL的触发器来禁用用户帐户

我想创建一个MySQL触发器禁用别人的帐户,如果他们已经登录到该网站的3倍。 我试图创建使用下面的代码这个触发器,但它不是is_active设置为0,无论什么times_logged_in是。 任何帮助,将不胜感激。

CREATE TRIGGER updateTrigger AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET is_active=0 WHERE NEW.is_code=1 AND NEW.times_logged_in>=3 AND NEW.user_id=user_id; END;

--------------解决方案-------------

你打的MySQL的限制。 你的表users调用触发器AFTER UPDATE ON users ),因此触发代码不能修改。 请参见MySQL-手册:

内存储的功能或触发器,它不允许修改已被使用(读或写)由调用功能或触发器的语句的表。

我不知道在哪里user_id来自于你的扳机,看起来像一个多余的检查,试试这个:

CREATE TRIGGER updateTrigger AFTER UPDATE ON users
FOR EACH ROW
BEGIN
UPDATE users SET is_active=0 WHERE NEW.is_code=1
AND NEW.times_logged_in>=3
END;

此外,要确保is_code = 1实际上是匹配您要更新的用户,如果它不是,它不会更新任何行。

我会用一个BEFORE UPDATE触发器来代替:

CREATE TRIGGER updateTrigger BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
IF NEW.is_code=1 AND NEW.times_logged_in>=3 THEN
SET NEW.is_active=0;
END IF;
END;

分类:MySQL的 时间:2015-03-14 人气:0
本文关键词: mysql的,触发器
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.477 (s). 10 q(s)