MYSQL:如何在不插入数据的情况下创建新行并获取新ID?

JD *_*cks 10 mysql

通常我会通过插入一些数据来获取新ID,然后创建一个新行并返回新ID.但是,如果我不想插入任何数据,我只想创建一个带有新ID的新行并获取新ID ...我该怎么做?

谢谢.

更新:

好这是我的问题.我想要这样做的表只有1 ID列.为什么?我会解释(我们会尝试).我有另一个表,其中每一行都有自己唯一的ID variation_id(auto-inc),但每行需要绑定到同一个表中的一组其他行.我有另一个名为group_id的专栏,我不能将它自动包含在内,因为它需要多次出现,而是说它应该将哪些变体组合在一起.所以我想有一个第二个表,其中group_id作为主键和auto-inc,所以每当我需要一个新组时,我就可以使用它来生成新的group_id.我想我的方式错了......所以我该怎么办?

pcs*_*csi 12

这是一个例子:

CREATE TABLE X (id int PRIMARY KEY AUTO_INCREMENT);
Run Code Online (Sandbox Code Playgroud)

然后你可以用你的"喂"你的桌子:

INSERT INTO X (id) VALUES (NULL);
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

检查这个小提琴:http://sqlfiddle.com/#!2/ 6b19c/1

希望能帮助到你!

ТарасЛукавий做了另一个问题,这是答案:

CREATE TABLE X (id int PRIMARY KEY AUTO_INCREMENT, time timestamp);
Run Code Online (Sandbox Code Playgroud)

然后你用以下方式"提供"数据:

INSERT INTO X (id, time) VALUES (NULL, now());
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

现在,让我们检查一下:

SELECT * FROM X
Run Code Online (Sandbox Code Playgroud)

你会看到每一行都有自动id和时间戳.

检查这个小提琴:http://sqlfiddle.com/#!2/ 9a344/2

希望能帮助到你!

  • +1干得好!请注意,您也可以为同一个影响插入`DEFAULT`值而不是`NULL` - 使代码更清晰IMO.此外,无需手动插入`now()`,因为`timestamp`列会在任何更改时自动更新.这是一个例子:http://sqlfiddle.com/#!2/5f193/1 (2认同)

Par*_*ots 2

所有列都必须可为空,并且必须为除 ID 之外的所有其他列插入 null。