更新另一个表时更新另一个表

时间:2014-09-07 12:15:28

标签: php sql

我不太清楚如何做我以后做的事情。所以我制作的是一款在线游戏。当用户购买新车时,我会做一个INSERT :

$c->query("INSERT INTO user_cars (carid, userid, acc, speed) VALUES ('$buyid','$id','$acc','$speed')");

现在我有另一张桌子,我需要在上面的查询上面的信息之后插入信息。我需要的是carid。用户可以拥有超过2辆车。我现在该怎么办?

2 个答案:

答案 0 :(得分:1)

您有多种选择:

  1. 当在cars表中插入行时,您可以构建一个触发器以在table2中插入新行(在此处阅读更多内容http://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html
  2. 这个函数mysql_insert_id()返回最后插入的id(在这里阅读更多http://php.net/manual/en/function.mysql-insert-id.php
  3. 如果您使用PDO,则会有一个smillar命令

答案 1 :(得分:1)

这是您想要创建的触发器的基本演示。为了便于说明,我还将ddl和示例插入到user_cars表中,以显示另一个表,我称之为#34; your_other_table"接收进入user_cars表的插入的插入(只是carid值)。

<强>小提琴: http://sqlfiddle.com/#!9/f76a7/1/0

(注意&#34; your_other_tabe&#34;有一行插入的插入物&#34; user_cars&#34;,尽管没有直接插入自身)

delimiter //

create table user_cars
(
 carid int,
 userid int,
 acc int,
 speed int,
 constraint id_pk primary key (carid, userid)
)//

create table your_other_table
(
 carid int
)//

create trigger your_trigger_name before insert on user_cars
    for each row begin
        insert into your_other_table (carid)
             values (new.carid);
end
//

insert into user_cars values
(1, 2, 3, 99)//

delimiter ;

select *
from your_other_table;

<强>输出:

| CARID |
|-------|
|     1 |

这是上面创建触发器的sql的唯一部分:

delimiter //

create trigger your_trigger_name before insert on user_cars
    for each row begin
        insert into your_other_table (carid)
             values (new.carid);
end
//

delimiter ;