0

我正在使用 PHP/MySQL 开发电​​子购物车/商店。

我从一开始就决定为地址创建一个单独的表,这样我就不会存储重复的数据(例如,每次对同一个地址下订单时,订单都会存储 address_id 而不是 door, street, town,城市、邮政编码等

现在我正在查询以处理订单,我将为用户提供一个选项
:a)从存储的列表(customer_id,address_id)中选择一个地址 - 或 -
b)创建一个新地址(查询返回 lastInsertId() )。

我有疑问,因为我不确定是否有任何情况lastInsertId()会返回错误address_id,因此系统会将订单发送到错误的存储地址?还是在处理订单时传递了错误的 ID 号?

我可以采取哪些额外的步骤来使这样的系统万无一失,从而永远不会给出错误的地址?

4

1 回答 1

1

对于 LAST_INSERT_ID(),最近生成的 ID 在每个连接的基础上维护在服务器中。它不会被其他客户端更改。如果您使用非魔术值(即非 NULL 且非 0 的值)更新另一个 AUTO_INCREMENT 列,它甚至不会更改。从多个客户端同时使用 LAST_INSERT_ID() 和 AUTO_INCREMENT 列是完全有效的。每个客户端都将收到客户端执行的最后一条语句的最后插入 ID。

查看更多:http ://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

于 2012-04-22T18:23:50.873 回答