是否可以使用触发器根据值将值从一个 table 插入到另一个?
Is it possible to insert a value from one table to another on the basis of value using trigger?
我有一个 table 指定的员工。
我还有另外两个 table 叫人力资源管理,会计。
我想根据他们的部门将员工插入到 hrm 和 accounting table。
CREATE TABLE employees (
employee_id INT(4) NOT NULL AUTO_INCREMENT,
employee_first_name VARCHAR(30) NOT NULL,
employee_last_name VARCHAR(30) NOT NULL,
employee_department VARCHAR(30) NOT NULL,
PRIMARY KEY (employee_id));
根据 employee_department,我想将该员工插入到特定的 table。
CREATE TABLE hrm (
employee_id INT(4),
employee_designation VARCHAR(20),
FOREIGN KEY (employee_id)
REFERENCES employees (employee_id)
ON DELETE CASCADE);
CREATE TABLE accounting (
employee_id INT(4),
employee_designation VARCHAR(20),
FOREIGN KEY (employee_id)
REFERENCES employees (employee_id)
ON DELETE CASCADE);
如果 employee_department 是 hrm,我希望该员工被插入到 hrm table,我如何通过 mysql 触发器或存储过程来实现?
尝试这样的事情:
CREATE DEFINER = CURRENT_USER TRIGGER `employees_AFTER_INSERT` AFTER INSERT ON `employees`
FOR EACH ROW
BEGIN
IF NEW.employee_department = 'hrm' THEN
INSERT INTO hrm
(employee_id, employee_designation)
VALUES
(NEW.employee_id, /*whatever you add here*/);
END IF;
END
我会解释一些关键点:
- 在
AFTER INSERT
触发器中,您可以使用NEW
获取插入值。所以这里: NEW.employee_department
等于新员工插入的 employee_department
值,对于 NEW.employee_id
相同(对于 AFTER DELETE
触发器,您可以使用 OLD
并且对于 AFTER UPDATE
更新后的值 NEW
和更新前的值 OLD
)
- 在 MySQL 触发器中,您可以添加条件:这里我检查新员工的新
employee_department
是否等于 "hrm" :如果是,则插入你的人力资源管理 table,否则触发器什么都不做
- 如果你想对"accounting"做同样的事情,逻辑也是一样的
我有一个 table 指定的员工。 我还有另外两个 table 叫人力资源管理,会计。 我想根据他们的部门将员工插入到 hrm 和 accounting table。
CREATE TABLE employees (
employee_id INT(4) NOT NULL AUTO_INCREMENT,
employee_first_name VARCHAR(30) NOT NULL,
employee_last_name VARCHAR(30) NOT NULL,
employee_department VARCHAR(30) NOT NULL,
PRIMARY KEY (employee_id));
根据 employee_department,我想将该员工插入到特定的 table。
CREATE TABLE hrm (
employee_id INT(4),
employee_designation VARCHAR(20),
FOREIGN KEY (employee_id)
REFERENCES employees (employee_id)
ON DELETE CASCADE);
CREATE TABLE accounting (
employee_id INT(4),
employee_designation VARCHAR(20),
FOREIGN KEY (employee_id)
REFERENCES employees (employee_id)
ON DELETE CASCADE);
如果 employee_department 是 hrm,我希望该员工被插入到 hrm table,我如何通过 mysql 触发器或存储过程来实现?
尝试这样的事情:
CREATE DEFINER = CURRENT_USER TRIGGER `employees_AFTER_INSERT` AFTER INSERT ON `employees`
FOR EACH ROW
BEGIN
IF NEW.employee_department = 'hrm' THEN
INSERT INTO hrm
(employee_id, employee_designation)
VALUES
(NEW.employee_id, /*whatever you add here*/);
END IF;
END
我会解释一些关键点:
- 在
AFTER INSERT
触发器中,您可以使用NEW
获取插入值。所以这里:NEW.employee_department
等于新员工插入的employee_department
值,对于NEW.employee_id
相同(对于AFTER DELETE
触发器,您可以使用OLD
并且对于AFTER UPDATE
更新后的值NEW
和更新前的值OLD
) - 在 MySQL 触发器中,您可以添加条件:这里我检查新员工的新
employee_department
是否等于 "hrm" :如果是,则插入你的人力资源管理 table,否则触发器什么都不做 - 如果你想对"accounting"做同样的事情,逻辑也是一样的