假设我有两张表格如下所示:
user
id plan course_limit username
10 0 ahmad
注意:plan是包含'','a','b','c'
的枚举字段。
course
id user_id username
1 10 ahmad
现在我想在用户插入课程时如图所示我希望course_limit
为该用户增加1,以便我可以应用限制。
答案 0 :(得分:1)
您可以使用以下代码创建触发器。
CREATE
DEFINER = 'root'@'localhost'
TRIGGER databasename.AI_course_each
AFTER INSERT
ON databasename.course
FOR EACH ROW
BEGIN
UPDATE user SET user.course_limit = user.course_limit + 1
WHERE user.user_id = new.user_id;
END;
一些解释
您为表格课程中插入FOR EACH ROW
的每一行AFTER INSERT
创建一个触发一次的触发器。
当您插入表格时,您可以触发BEFORE
和AFTER
插入完成
如果你想要能够防止之前发射的插入物,如果你只是想做有用的工作,你就会开火。
可以通过 dummy 表'new'访问插入的字段。
所以在每次插入之后都会执行UPDATE语句。
更多触发选项
您还可以使用触发器BEFORE UPDATE
,AFTER UPDATE
,BEFORE DELETE
和 AFTER DELETE
。
在更新和删除案例中,您将获得一个额外的虚拟表old
,您可以在更新或删除之前使用该表来引用表中的数据。
还有更多可能,但我现在要保持简单。
有关详细信息,请参阅http://forge.mysql.com/wiki/Triggers。
答案 1 :(得分:0)
使用trigger可以解决您的问题:通过它,您将能够在MySQL服务器上注册SQL代码,该代码在某些事件发生时运行(如插入)