涉及DECLARE和临时变量的SQL查询

时间:2012-06-29 01:23:14

标签: mysql

我对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块中使用它。 我在这里做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

$insert_id = mysql_insert_id();

获取自动递增的ID。

答案 1 :(得分:0)

我在MySQL控制台上可以访问最后插入的AUTO_INCREMENT ID:

SELECT LAST_INSERT_ID();

如果您希望将此信息存储在变量中以备将来使用:

SET @lastid = LAST_INSERT_ID();

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