如何在mysql或JDBC中的表中自动插入外键引用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在mysql或JDBC中的表中自动插入外键引用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1555字,纯文字阅读大概需要3分钟。
内容图文
![如何在mysql或JDBC中的表中自动插入外键引用?](/upload/InfoBanner/zyjiaocheng/912/c252028563b94443aa9027779ae83d05.jpg)
我正在使用MySQL.我的问题是如何自动将新添加的行插入外键表.一个例子将澄清我的问题:
我有两个表Employee和Salary:
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")
执行此语句后,将在Employee表中创建一个行,该行具有由数据库引擎分配的pk.
现在,当我在员工表中为员工John插入一行时,如下所示:
INSERT into SALARY values ("30000", ?????)
如何获取上面John插入的行的员工ID,并将其放在?????的位置?
最后,我有一个连接表,每次在工资表中添加一行时,我想要连接表中的相应条目.这可以通过触发器完成,但我不完全清楚如何设置它因为我需要连接表行的emp_id和sal_id的引用.
我还想了解处理外键插入时的最佳实践.我正在使用JDBC / mysql驱动程序.我想这不应该影响我们在sql语句中如何处理上面的过程.
解决方法:
您可以使用函数LAST_INSERT_ID获取插入行的auto_increment列的ID:
所以你可以使用
INSERT into SALARY (salary_figure, emp_id) values ("30000", LAST_INSERT_ID());
为您的第二次INSERT操作.
如果要通过触发器将行添加到第三个表中,使用新的sal_id和emp_id值,可以使用emp_id列中的新值和最后插入的auto_increment id,在Salary表上使用AFTER INSERT触发器执行此操作. …已经提到过LAST_INSERT_ID()函数.
CREATE TRIGGER salary_after_insert AFTER INSERT ON `SALARY`
FOR EACH ROW
BEGIN
INSERT INTO join_table (emp_id, sal_id) VALUES (NEW.emp_id, LAST_INSERT_ID());
END;
内容总结
以上是互联网集市为您收集整理的如何在mysql或JDBC中的表中自动插入外键引用?全部内容,希望文章能够帮你解决如何在mysql或JDBC中的表中自动插入外键引用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。