在另一个表中插入时,递增表中的字段

时间:2011-03-24 17:22:33

标签: php mysql

假设我有两张表格如下所示:

user
id    plan     course_limit     username 
10                  0            ahmad

注意:plan是包含'','a','b','c'的枚举字段。

course
id    user_id   username
1       10        ahmad

现在我想在用户插入课程时如图所示我希望course_limit为该用户增加1,以便我可以应用限制。

2 个答案:

答案 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创建一个触发一次的触发器。

当您插入表格时,您可以触发BEFOREAFTER插入完成 如果你想要能够防止之前发射的插入物,如果你只是想做有用的工作,你就会开火。 可以通过 dummy 表'new'访问插入的字段。

所以在每次插入之后都会执行UPDATE语句。

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

在更新和删除案例中,您将获得一个额外的虚拟表old,您可以在更新或删除之前使用该表来引用表中的数据。

还有更多可能,但我现在要保持简单。

有关详细信息,请参阅http://forge.mysql.com/wiki/Triggers

答案 1 :(得分:0)

使用trigger可以解决您的问题:通过它,您将能够在MySQL服务器上注册SQL代码,该代码在某些事件发生时运行(如插入)