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;