Я использую MySQL. Мой вопрос заключается в том, как автоматически вставлять вновь добавленную строку в таблицу внешнего ключа. Пример пояснит мой вопрос:
У меня есть две таблицы Employee and 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
}
В приведенной выше таблице соединений нет отношения внешнего ключа.
Теперь, когда я вставляю сотрудника в таблицу employee
INSERT into Employee values ("john")
После выполнения этого оператора строка создается в таблице Employee, которая имеет pk, назначенный механизмом базы данных.
Теперь, когда я вставляю строку для сотрудника Джона в таблицу зарплат, как показано ниже:
INSERT into SALARY values ("30000", ?????)
Как мне получить идентификатор сотрудника только что вставленной строки для Джона выше и поместить его здесь вместо ?????
Наконец, у меня есть таблица соединений, где каждый раз, когда строка добавляется в таблицу зарплат, мне нужна соответствующая запись в таблице соединений. Это может быть сделано с помощью триггеров, но я не совсем понимаю, как настроить его, потому что мне нужны ссылки как emp_id
, так и sal_id
для строки таблицы соединений.
Я также хотел бы узнать лучшие практики здесь, когда занимаюсь вставками внешнего ключа. Я использую драйвер JDBC/mysql. Я предполагаю, что это не должно влиять на то, как мы обрабатываем выше в sql-операторах.