我正在使用MySQL。我的問題是如何自動將新添加的行插入到外鍵表中。下面舉例說明我的問題:如何在MySQL或JDBC表中自動插入外鍵引用?
我有兩個表僱員和工資待遇:
CREATE TABLE Employee(
emp_id int NOT NULL AUTO_INCREMENT,
name char(30),
PRIMARY KEY (emp_id)
) ENGINE=innoDB;
CREATE TABLE salary {
sal_id int NOT NULL AUTO_INCREMENT
salary_figure int,
emp_id int,
PRIMARY KEY (sal_id),
FOREIGN KEY REFERENCES Employee(emp_id)
}
這裏是連接表:
employee_salary_join Table {
int sal_id,
int emp_id
}
連接表上面沒有任何外鍵關係。
現在,當我插入一個員工到員工表
INSERT into Employee values ("john")
執行該語句之後,在具有由數據庫引擎分配PK Employee表創建一個行。
現在,當我在工資表如下插入員工約翰列:
INSERT into SALARY values ("30000", ?????)
如何獲取剛插入行的員工ID爲約翰以上,並把它在這裏的?????
最後,我有一個連接表,其中每次在工資表中添加一行時,我都希望連接表中的相應條目。這可以通過觸發器完成,但我不完全清楚如何設置它,因爲我需要連接錶行的引用emp_id
和sal_id
。
我也想知道在處理外鍵插入時的最佳實踐。我正在使用JDBC/MySQL驅動程序。我想這應該不會影響我們上面在sql語句中的過程。
可能重複【如何獲得JDBC插入ID?](http://stackoverflow.com/questions/1915166/how- jdbc) – 2014-09-18 19:15:01
@MarkRotteveel:該鏈接有助於澄清第一部分。關於獲取連接表的ids的第二部分,在JDBC中有沒有辦法自動插入。或者在數據庫結束時需要觸發器。如果是這樣,要觸發器工作,需要知道這兩個表中的兩行的編號 – 2014-09-18 19:22:06
這是您應該堅持SO的一個具體問題的原因之一。但是,MySQL具有觸發器,您可以從插入的記錄中獲取值以插入到另一個表中,請參閱http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html(末尾的具體示例) – 2014-09-18 19:33:55