不间断查询

7lrncoxx  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(284)

我想在表中插入一条记录,并检索被设置为自动递增的插入记录的id。但是,在插入和检索操作之间,有可能有另一个用户通过向表中插入另一个数据进行干预。这意味着,我可能检索到错误的记录id。如何在mysql中避免此问题?谢谢您。
我使用的查询是 SELECT CustomerID FROM Customers order by CustomerID desc limit 1;

flseospp

flseospp1#

可以按如下方式获取插入行的自动增量值:

INSERT INTO Customers (column1,column2,...) VALUES('value1','value2',...);
SELECT LAST_INSERT_ID();
gzszwxb4

gzszwxb42#

将新列添加到 Customers 表并命名 ConnectionID 或者 SessionID . 在插入新记录时,请确保为 ConnectionID 它应该引用一个唯一的值,每当有人尝试插入新记录(customer)时,该值都会发生更改。当你选择的时候,用这个 ConnectionID 现在生成并保存在上一个查询中的,请在 WHERE 子句以确保只获取插入的最后一条记录,并避免其他用户同时插入任何其他记录。
这个 Customers table应该是这样的:

+------------+----------+----------+-----+----------------+
| CustomerID |  column1 |  column2 | ... |   ConnectionID |
+------------+----------+----------+-----+----------------+
|      1     | value1-1 | value2-1 | ... |  anothervalue  |
+------------+----------+----------+-----+----------------+
|      2     | value1-2 | value2-2 | ... |  UniqueValue   |
+------------+----------+----------+-----+----------------+
|      3     | value1-3 | value2-3 | ... |  UniqueValue   |
+------------+----------+----------+-----+----------------+
|      4     | value1-4 | value2-4 | ... | someothervalue |
+------------+----------+----------+-----+----------------+

所以 INSERT 声明如下:

INSERT INTO Customers (column1, column2, ..., ConnID) VALUES('value1-3', 'value2-3', ..., 'UniqueValue');

以及 SELECT 您插入的最后一个自动增量id是:

SELECT CustomerID FROM Customers WHERE ConnID = 'UniqueValue' ORDER BY CustomerID desc limit 1;

相关问题