【问题标题】:mysql double insert with relationmysql双插入与关系
【发布时间】:2013-02-07 02:46:26
【问题描述】:

我是一个 mySQL 新手 - 通常只使用 INSERT、SELECT 语句...

在查看了一些 SO 帖子 like this questionthis one。我不确定我明白了。

我的(简化的)场景:

我有两张桌子。

Table1 is named "titles" and has 3 columns: id, pagetitle, pages_id
Table2 is named "pages" and has 2 columns: id, content

在一个表单中,我提交了 2 个表单域:title, content

现在,我想在每个表中插入每个值,但当然我想确保titles.pages_idpages.id 的值相同。 titles.idpages.id 都是自动递增的。

这不是 PHP 问题

我知道如何使用 PHP 执行此操作,方法是创建两个单独的 sql 语句并在第二个查询中使用第一个查询中的 mysqli_insert_id()

但我认为有一种仅 SQL 的方式来执行多插入查询......还是有吗?

谢谢。

【问题讨论】:

  • 也许可以试试 MySQl 存储过程? dev.mysql.com/doc/refman/5.1/en/stored-routines.html
  • 如果要插入两个表,需要两个查询。
  • @Dan - 也许我没有使用正确的命名法,但我认为transactions 我可以在一个语句中做多个INSERT,不是吗?

标签: mysql sql mysqli mysql-insert-id mysqli-multi-query


【解决方案1】:

自动增量不会阻止您插入特定的 ID。只需先插入一个表,然后在插入第二个表时使用该 ID。

【讨论】:

  • 好吧,但 auto_increment 的全部意义在于我不必考虑可能的重复项,数据库将确保 id 是唯一的。我想我忘了说我也在id 列上使用了unique 属性。
  • 如果第一个表中的数据在第二个表中不是唯一的,您是否不想要它。开始transaction。如果第二个INSERT 未能通过唯一约束rollback。如果可以commit。您不能使用 1 个语句添加到 2 个表。但是您可以在一个事务中运行多个查询并一次提交它们。
【解决方案2】:

经过更多的实验,我想出了这个说法

INSERT INTO pages (`content`) VALUES('hello world'); 
INSERT INTO titles (`pagetitle`, `pages_id`) VALUES ('hw page', LAST_INSERT_ID());

看起来这样做没有问题。它似乎工作正常。

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 2013-03-23
    相关资源
    最近更新 更多