0

假设我的订单表中的最后一行是

Order_ID      Product
  555          Apple

我如何确保在确切时间发生的 2 个订单不会获得相同的 Order_ID,即下一个订单的 556,因为这就是发生在我身上的事情。我的表使用 INNODB。

实际上 Order_ID 是一个自增字段。我正在使用 Show Table Status 查询并使用 [Auto-increment] 来获取下一个 Order_iD。有什么建议么?

4

2 回答 2

1

定义Order_ID具有属性的列AUTO_INCREMENT并让 MySQL 为您分配值(然后last_insert_id在成功插入后通过询问驱动程序来检索):

ALTER TABLE orders MOFIFY Order_ID BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;

然后,要插入记录,您只需不提供Order_ID值,它将自动分配:

INSERT INTO orders (Product) VALUES ('Apple');
于 2012-10-15T12:31:05.843 回答
1

我相信您正在“硬编码” order_id + 1 ...

请在您的表中使用 Auto_increment,它会保证您不会重复任何 order_id

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

在你的情况下,复制你的表(备份),改变你的表并添加一个 auto_increment 然后再次导入

于 2012-10-15T12:31:37.630 回答