Q: 有时候做类似接口里的数据订正,需要取到insert语句返回的id主键,在程序里通过对象返回好取,但是写sql怎么取到呢?
A: 用select @@identity得到上一次插入记录时自动产生的ID
说明:
- 若插入了多个行,则会产生多个标识值,@@IDENTITY 返回最后产生的标识值
举个栗子:
CREATE TABLE a (
id int(255) NOT NULL auto_increment,
name VARCHAR(20) NOT null,
PRIMARY KEY (id)
);
DELETE FROM a;
SELECT * FROM a;
INSERT INTO a (name) VALUES('a');
INSERT INTO a (name) VALUES('b');
SELECT @@IDENTITY; -- 这里会显示出name='b'的记录id
SET @lastId=(SELECT @@IDENTITY); -- 把@lastId赋值为2
INSERT INTO a (name) VALUES(@lastId);-- name=2
SELECT * FROM a;