1

我对 SQL 很陌生,但试图编写一个相当复杂的查询,但它在第一部分失败了。我需要为自动递增 ID 的表创建一个新行,并立即提取 ID 以进一步使用查询。已经搜索了几个小时试图理解这一点,但似乎无法让它发挥作用。这是开场白(它似乎失败了):

DECLARE @point1ID;
INSERT INTO points SET
pointName = "$pointName1",
street = "$street1",
town = "$town1",
city = "$city1",
zip = "XXX",
country = "$country1",
pointDescription = "$pointDescription1";
SELECT @point1ID = scope_identity();

我希望这会将刚刚插入的行的 ID 放入变量 @point1ID 中,以便稍后在同一个 TRANSACTION / COMMIT 块中使用它。我在这里做错了什么?

谢谢!

4

2 回答 2

0

鉴于您在 PHP 中使用查询,请执行 INSERT,然后使用

$insert_id = mysql_insert_id();

获取自动递增的 ID。

于 2012-06-29T01:34:26.970 回答
0

在 MySQL 控制台中,您可以使用以下命令访问最后插入的 AUTO_INCREMENT ID:

SELECT LAST_INSERT_ID();

如果您想将此信息存储在变量中以供将来使用:

SET @lastid = LAST_INSERT_ID();

正如我已经说过的,这仅适用于具有 AUTO_INCREMENT 列的表。此值也在服务器端维护,并且仅用于此连接。如果将 AUTO_INCREMENT 列设置为特定的非特殊值,则不会更新此值。

于 2012-06-29T01:58:28.323 回答