php - 当插入另一个表时增加表中的字段

标签 php mysql

假设我有两个表,如下所示:

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 中的每一行触发 一次

当您插入表中时,您可以触发 BEFOREAFTER 插入完成。
如果你想阻止你之前触发的插入,如果你只是想做有用的工作,你就在之后触发。 可以通过一个虚拟"new"表访问插入的字段。

所以这里每次插入后都会执行 UPDATE 语句。

更多触发选项
您还可以使用触发器 BEFORE UPDATEAFTER UPDATEBEFORE DELETE AFTER DELETE

在更新和删除的情况下,您会得到一个额外的虚拟表 old,您可以使用它来引用更新或删除发生之前表中的数据。

还有很多可能,但我现在会保持简单。

参见 http://forge.mysql.com/wiki/Triggers了解更多信息。

关于php - 当插入另一个表时增加表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5423023/

相关文章:

PHP 变量值依赖于另一个变量的值

javascript - PHP 循环包括一些 JavaScript

mysql - SQL 计算一个值在多个列中出现了多少次?

php - 根据 WooCommerce 产品类型显示或隐藏管理自定义设置字段

php - 删除不适用于 pdo

php - DISTINCT 函数不能与 $wpdb 一起在线工作

php - CodeIgniter 状态更改

mysql查询根据时间戳排列四个表中的数据

mysql - 减去两个mysql查询

mysql 按 column1 排序但如果 column2 = 0 然后添加到末尾但仍按第 1 列排序