栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL插入多个表?(数据库规范化?)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL插入多个表?(数据库规范化?)

不,您不能在一个MySQL命令中插入多个表。但是,您可以使用事务。

BEGIN;INSERT INTO users (username, password)  VALUES('test', 'test');INSERT INTO profiles (userid, bio, homepage)   VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');COMMIT;

看一下

LAST_INSERT_ID()
重用自动增量值。

编辑:您说:“ _经过所有这些时间试图弄清楚,它仍然无法正常工作。我不能简单地将刚刚生成的ID放在$ var中,然后将该$

var放入所有MySQL命令中?_ ”

让我详细说明一下:这里有3种可能的方式:

  1. 在上面的代码中。这是在MySQL中完成的,
    LAST_INSERT_ID()
    第二条语句中的 in将自动成为在第一条语句中插入的autoincrement-column的值。

不幸的是,当第二条语句本身在具有自动增量列的表中插入行时,

LAST_INSERT_ID()
它将被更新为表2的表,而不是表1的表。如果此后仍需要表1的表,我们将必须将其存储在一个变量中。这将我们引向方法2和3:

  1. LAST_INSERT_ID()
    在MySQL变量中存储:

    INSERT ...

    SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
    INSERT INTO table2 (@mysql_variable_here, …);
    INSERT INTO table3 (@mysql_variable_here, …);

  2. 将以

    LAST_INSERT_ID()
    php变量(或您选择的任何可以连接到数据库的语言)存储:

    • INSERT ...
    • 使用您的语言来检索
      LAST_INSERT_ID()
      ,方法是在MySQL中执行该文字语句,或者使用例如php
      mysql_insert_id()
      来为您完成的操作
    • INSERT [use your php variable here]

警告

无论选择哪种解决方案,都必须决定 在查询之间执行被中断
(例如,数据库服务器崩溃)时应该发生什么。如果您可以忍受“有些已经完成,有些还没有完成”,请不要继续阅读。

但是,如果您决定“要么所有查询都完成,要么都没有完成-
我不希望某些表中的行,但又不希望某些表中的行匹配,我总是希望我的数据库表是一致的”,则需要将所有语句包装在事务中。这就是为什么我在

BEGIN
COMMIT
那里使用。

如果您需要更多信息,请再次评论:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368889.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号