前言
在業務中經常會遇到類似以下模型的表:
表1 STUDENT表(學生表)
stu_id | stu_name |
---|---|
1 | 張三 |
2 | 李四 |
表2 SCHOOL表(學校表)
school_id | school_name |
---|---|
1 | aa大學 |
2 | bb大學 |
表3 RELATION表(學校與學生的關係表)
school_id | stu_id |
---|---|
1 | 2 |
2 | 1 |
其中stu_id
與school_id
均爲自增主鍵,此時要一次性新增數據就比較麻煩,因爲要獲取新增學生和學校的自增id寫入關係表。
@@identity
使用
SELECT @@identity;
可以得到上一次插入記錄時自動產生的ID,在一條INSERT語句執行完畢後,@@identity
返回的即爲該INSERT語句的自增id,如果是多條執行完畢後,@@identity
返回的爲最後一條數據的自增id。
解決辦法
藉助@@identity
可以輕鬆地解決之前的問題,假如現在有一個新學生王五,在CC大學就讀,此時我們就可以利用下列語句來新增數據。
INSERT INTO STUDENT(stu_name) VALUES("王五");
# 使用變量stu1 存儲 新增學生的自增id
SELECT @stu1 := @@identity;
INSERT INTO SCHOOL(school_name) VALUES("CC大學");
# 使用變量 school1 存儲 新增學校的自增ID
SELECT @school1 := @@identity;
#寫入關係表
INSERT INTO RELATION(school_id, stu_id) VALUES(@school1, @stu1);