mysql數據庫問題,如何同一個操作添加兩個表(a表,b表),並把b表的id添加到a表字段中,b表id自動增長
在數據庫中創建存儲過程,比如存儲過程的名字叫做 test
在java中和正常使用sql的方法一樣, sql = "call test(B1,B2)", B1和B2是假設你將要插入b表中的數據
假設b表的結構是(ID int auto_incremet, B1 int, B2 int)
假設a表的結構是(ID int)
CREATE test(B1 int, B2 int) #假設A1和A2是將要插入b表中的數據
BEGIN
declare new_id as int; #聲明自增長所添加的ID
insert into b(B1,B2) values(B1,B2); #給b插入新的記錄
select last_insert_id() into new_id; #取得新插入記錄的ID
insert into a(ID) values(new_id); #把新插入的ID寫入a表
select new_id; #如果需要的話存儲過程返回新得到的ID給客戶端
END
注意: 為什么推薦使用存儲過程,而不是直接在java程序中使用select last_insert_id(); 因為這個函數是打開當前端口時,返回最后一個插入的自增長的ID, 如果不用存儲過程,可能當前鏈接關閉,或有其他的應用也在其他有自增長ID的表中插入新的記錄, 這時你取回的ID就是錯誤的。