同时选择并插入

Lin*_*nas 3 mysql sql

所以,我需要获得调用的最大字段数,chat_id之后我需要将其递增1并在该字段中插入一些数据,因此查询应如下所示:

SELECT MAX(`chat_id`) FROM `messages`;
Run Code Online (Sandbox Code Playgroud)

让我们说它现在返回10我需要插入新数据

INSERT INTO `messages` SET `chat id` = 11 -- other data here....
Run Code Online (Sandbox Code Playgroud)

所以它会按照我想要的方式工作,但我的问题是如果在那个时候我正在增加并插入新记录,其他用户会做同样的事情?比已经有11 id的记录,它可能弄乱我的数据是否有一种方法,以确保正确的ID到我需要的地方,顺便说一下,我不能用户自动增加这个.

编辑,因为我说我不能使用自动增量因为该表已经有自动增量的id字段,这个id是针对不同的porpuse,它也不是唯一的,它不能是唯一的

编辑2通过重做我的整个表结构来解决它,因为没有人给我更好的想法

Joe*_*lli 5

不要试图自己做这件事.你已经发现了这种方法的一个缺陷.我不确定你为什么说你不能在这里使用自动增量.这真的是要走的路.

CREATE TABLE messages (
    chat_id INT NOT NULL AUTO_INCREMENT,
    ....
)
Run Code Online (Sandbox Code Playgroud)