我有个叫雇员的桌子。我还有另外两张桌子叫做人力资源管理,会计。我想把员工按照他们的部门插入人力资源管理和会计表。
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,我想将该雇员插入到特定的表中。
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是人力资源管理,我希望该员工被插入人力资源管理表中,我如何通过mysql触发器或存储过程来实现?
发布于 2018-10-17 08:55:22
试着做这样的事情:
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 )。employee_department是否等于" hrm“:如果是,那么在人力资源管理表中插入,否则触发器什么也不做。https://stackoverflow.com/questions/52850729
复制相似问题