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

859c7835422b1475016da719d24fad5e.png

慕斯王

不,不能在一个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命令中吗?"让我详细说明:这里有三种可能的方法:在上面看到的代码中。这一切都是在MySQL中完成的,LAST_INSERT_ID()在第二个语句中,自动递增列的值将自动插入到第一个语句中。不幸的是,当第二个语句本身使用自动增量列在表中插入行时,LAST_INSERT_ID()将被更新为表2,而不是表1。如果之后仍然需要表1,我们将不得不将它存储在一个变量中。这就引出了方法2和3:将库存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, ...);将库存LAST_INSERT_ID()在php变量(或您选择的任何可以连接到数据库的语言)中:INSERT ...使用您的语言检索LAST_INSERT_ID(),或者在MySQL中执行该文字语句,或者使用php的mysql_insert_id()这样做是为了你INSERT [use your php variable here]警告无论你选择怎样解决这个问题,你都必须决定应该发生什么。如果在查询之间中断执行(例如,数据库服务器崩溃)。如果你能接受“一些人已经完成了,另一些人没有”,那就不要继续读下去。但是,如果您决定“所有查询都完成了,或者没有完成-我不希望某些表中的行与其他表中的行匹配,我总是希望我的数据库表是一致的”,那么您需要在一个事务中包装所有语句。所以我才用BEGIN和COMMIT这里。如果您需要更多信息,请再次评论:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值