【发布时间】:2011-10-09 08:06:03
【问题描述】:
如何在mysql中获取下一个id插入到表中
INSERT INTO payments (date, item, method, payment_code)
VALUES (NOW(), '1 Month', 'paypal', CONCAT("sahf4d2fdd45", id))
【问题讨论】:
-
使用
auto_increment列 -
你想要next id,还是你当前插入的行的id?也就是支付码末尾的id应该是支付码所在行的id吗?
-
我当前插入的行的id
-
在这种情况下,请在检索值时连接它们,而不是在插入它们时连接它们。这样会容易得多,并且您排除了获取错误的 ID,或者必须运行更新 - 想想如果您刚刚插入的行在更新有机会运行之前被另一个客户端请求会发生什么:客户端最终会得到一个无效的付款代码。在低流量系统上,这可能不会发生,但我看不出冒险的意义。
-
...或者正如@binaryLV 指出的那样,资源锁定也可能解决问题。见:dev.mysql.com/doc/refman/5.5/en/lock-tables.html