gpt4 book ai didi

mysql - 是否可以使用触发器根据值将值从一个表插入到另一个表?

转载 作者:行者123 更新时间:2023-11-29 10:01:30 24 4
gpt4 key购买 nike

我有一个名为员工的表。我还有另外两个名为 hrm、accounting 的表。我想根据员工的部门将员工插入到hrm和会计表中。

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是hrm,我希望将该员工插入到hrm表中,我如何通过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”:如果是,则在您的 hrm 表中执行插入操作,否则触发器不执行任何操作
  • 如果您想对“会计”执行相同的操作,逻辑将是相同的

关于mysql - 是否可以使用触发器根据值将值从一个表插入到另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52850729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com