mysql触发器使用

MySQL触发器是一种自动执行的存储过程,当特定事件(如插入、更新或删除)发生时,触发器会自动执行。

MySQL触发器是一种存储在数据库中的程序,它会在特定的事件(如插入、更新或删除数据)发生时自动执行,触发器可以用于实现数据的完整性约束、审计和自动化任务等。

以下是一个简单的MySQL触发器示例:

mysql触发器使用

1、创建表结构

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    department_id INT NOT NULL
);

2、创建部门表结构

CREATE TABLE departments (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    manager_id INT,
    FOREIGN KEY (manager_id) REFERENCES employees(id)
);

3、创建插入触发器

mysql触发器使用

当向employees表插入数据时,如果新员工的部门ID为NULL,则将该员工分配给部门ID为1的部门。

DELIMITER //
CREATE TRIGGER assign_default_department
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
    IF NEW.department_id IS NULL THEN
        SET NEW.department_id = 1;
    END IF;
END;
//
DELIMITER ;

4、创建更新触发器

当更新employees表中的数据时,如果员工的部门ID被设置为NULL,则将该员工从部门中移除。

mysql触发器使用

DELIMITER //
CREATE TRIGGER remove_from_department
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
    IF NEW.department_id IS NULL THEN
        DELETE FROM departments WHERE id = OLD.department_id;
    END IF;
END;
//
DELIMITER ;

5、创建删除触发器

当从employees表中删除数据时,如果员工的部门中没有其他员工,则删除该部门。

DELIMITER //
CREATE TRIGGER delete_department_if_empty
AFTER DELETE ON employees
FOR EACH ROW
BEGIN
    DECLARE department_count INT;
    SELECT COUNT(*) INTO department_count FROM employees e2 WHERE e2.department_id = OLD.department_id;
    IF department_count = 0 THEN
        DELETE FROM departments WHERE id = OLD.department_id;
    END IF;
END;
//
DELIMITER ;

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/637298.html

(0)
未希的头像未希新媒体运营
上一篇 2024-05-20 19:24
下一篇 2024-05-20 19:24

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入