MySQL INSERT ON DUPLICATE KEY UPDATE原因ID不在顺序中

时间:2018-05-14 17:26:23

标签: mysql

我使用这个SQL创建了一个表:

CREATE TABLE import_xlsx (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
date DATETIME,
pair VARCHAR(10),
action VARCHAR(5),
volume DECIMAL(20,8),
order_price DECIMAL(20,8),
trading_price DECIMAL(20,8),
status VARCHAR(20),
CONSTRAINT table_unique UNIQUE (date, pair, action));

我有INSERT

INSERT INTO binance_xlsx (date, pair, action, volume, order_price, trading_price, status)
VALUES('2018-05-14 13:58:54', 'ETHUSDT', 'SELL', '0.1', '725.0', '724.95', 'Filled') 
ON DUPLICATE KEY UPDATE 
status = VALUES(status);

我试图故意插入重复的行,数字ID会自动递增。但是如果插入了新行,那么行数仍然不应该自动增加吗?

结果如下:

+----+---------------------+---------+--------+------------+--------------+---------------+--------+
| id | date                | pair    | action | volume     | order_price  | trading_price | status |
+----+---------------------+---------+--------+------------+--------------+---------------+--------+
|  1 | 2018-05-14 13:58:53 | ETHUSDT | BUY    | 0.09889000 | 725.00000000 |  724.95000000 | Filled |
| 11 | 2018-05-14 13:58:53 | ETHUSDT | SELL   | 0.10000000 | 725.00000000 |  724.95000000 | Filled |
| 13 | 2018-05-14 13:58:54 | ETHUSDT | SELL   | 0.10000000 | 725.00000000 |  724.95000000 | Filled |
+----+---------------------+---------+--------+------------+--------------+---------------+--------+

如何按顺序保持id自动递增?

1 个答案:

答案 0 :(得分:1)

这只是因为您的主键是自动增加的列,因此当您尝试插入时,您永远不会获得重复的键并插入新行。这是id列的创建声明:

id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY

您应该更改它并将主键设为(date, pair, action)值,以便它可以正常工作