在表A的插入查询中的表B中插入行

时间:2011-03-10 00:11:30

标签: php mysql sql codeigniter

使用MySQL,我认为有一种方法可以关联地进行,但也许我错了。

我有一个带有userID的表A,带有userID的表B,它设置为删除A.userID以级联和删除B.userID。

所以我有一个查询(使用CI),在表A中插入信息,我想用一个用户ID(PK,AI)在表B中插入一行。有时它会在B.userID行中插入值,有时它将完全为空值。

关于如何做到这一点的想法?

感谢。

3 个答案:

答案 0 :(得分:1)

最简单的方法是编写存储过程来执行插入操作。这可以在事务中插入并接受要添加到B和A中的数据的参数。然后,您查询将调用存储的proc而不是直接插入。

答案 1 :(得分:1)

我真的需要看到实际的查询,但我相信这正是你要找的。

在CodeIgniter中插入数据时,您可以像这样获得插入的主键。

$this->db->insert('A',$data);  //insert into the table with 'userID' as PK, AI

$id_of_insert = $this->db->insert_id();

$data_for_b = array(
    'field' => 'value',
    ...
    'userID' => $id_of_insert   //insert the captured PK from A and place in the FK field of B
);

$this->db->insert('B', $data_for_b);

答案 2 :(得分:0)

在这种方法中你应该考虑以下几点:

  1. 如果你的auto_increment是BIGINT,它会给出错误的值。

  2. 如果您在读取值之前插入了某些内容并且其他人插入了某些内容,则可能会出现错误的ID。我建议用不同的东西来读取值。 (例如用户注册中的昵称)。