假设我有两个表,如下所示:
user
id plan course_limit username
10 0 ahmad
注意:计划是包含 '','a','b','c'
的枚举字段。
course
id user_id username
1 10 ahmad
现在我希望当用户插入类(class)时,如图所示,我希望该用户的 course_limit
递增 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
到表 course 中的每一行触发 一次。
当您插入表中时,您可以触发 BEFORE
和 AFTER
插入完成。
如果你想阻止你之前触发的插入,如果你只是想做有用的工作,你就在之后触发。
可以通过一个虚拟"new"表访问插入的字段。
所以这里每次插入后都会执行 UPDATE 语句。
更多触发选项
您还可以使用触发器 BEFORE UPDATE
、AFTER UPDATE
、BEFORE DELETE
和 AFTER DELETE
。
在更新和删除的情况下,您会得到一个额外的虚拟表 old
,您可以使用它来引用更新或删除发生之前表中的数据。
还有很多可能,但我现在会保持简单。
参见 http://forge.mysql.com/wiki/Triggers了解更多信息。
关于php - 当插入另一个表时增加表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5423023/