admin管理员组

文章数量:1568308

2024年7月4日发(作者:)

sql查询触发器语句

SQL触发器是一种特殊的数据库对象,它可以在特定的数据库操作

(例如插入、更新、删除)发生时自动执行一些预定义的动作。触

发器可以用于实现复杂的业务逻辑和数据完整性约束。下面列举了

10个常见的SQL触发器语句:

1. 在员工表上创建触发器,当有新员工加入时,自动在工资表中插

入一条新记录:

```sql

CREATE TRIGGER insert_employee

AFTER INSERT ON employees

FOR EACH ROW

BEGIN

INSERT INTO salaries (employee_id, salary) VALUES

(ee_id, 0);

END;

```

2. 在订单表上创建触发器,当订单状态更新为已发货时,自动更新

库存表中对应商品的数量:

```sql

CREATE TRIGGER update_inventory

AFTER UPDATE ON orders

FOR EACH ROW

BEGIN

IF = '已发货' THEN

UPDATE inventory SET quantity = quantity -

ty WHERE product_id = t_id;

END IF;

END;

```

3. 在学生表上创建触发器,当有新学生加入时,自动更新班级表中

的学生人数:

```sql

CREATE TRIGGER update_class_size

AFTER INSERT ON students

FOR EACH ROW

BEGIN

UPDATE classes SET size = size + 1 WHERE class_id =

_id;

END;

```

4. 在商品表上创建触发器,当商品数量低于阈值时,自动发送库存

警报邮件:

```sql

CREATE TRIGGER send_inventory_alert

AFTER UPDATE ON products

FOR EACH ROW

BEGIN

IF ty < 10 THEN

-- 发送邮件的逻辑

END IF;

END;

```

5. 在订单表上创建触发器,当订单被删除时,自动将对应的商品数

量加回库存:

```sql

CREATE TRIGGER restore_inventory

AFTER DELETE ON orders

FOR EACH ROW

BEGIN

UPDATE inventory SET quantity = quantity + ty

WHERE product_id = t_id;

END;

```

6. 在员工表上创建触发器,当员工的工资被更新时,自动记录工资

变动历史:

```sql

CREATE TRIGGER log_salary_change

AFTER UPDATE ON employees

FOR EACH ROW

BEGIN

INSERT INTO salary_history (employee_id, old_salary,

new_salary, change_date) VALUES (ee_id,

, , NOW());

END;

```

7. 在订单表上创建触发器,当有新订单完成支付时,自动更新销售

统计表中的数据:

```sql

CREATE TRIGGER update_sales_stats

AFTER INSERT ON orders

FOR EACH ROW

BEGIN

IF = '已支付' THEN

UPDATE sales_stats SET total_sales = total_sales +

_amount, order_count = order_count + 1;

END IF;

END;

```

8. 在学生表上创建触发器,当学生的成绩被更新时,自动计算并更

新班级的平均成绩:

```sql

CREATE TRIGGER update_class_avg_score

AFTER UPDATE ON students

FOR EACH ROW

BEGIN

UPDATE classes SET avg_score = (SELECT AVG(score) FROM

students WHERE class_id = _id) WHERE class_id =

_id;

END;

```

9. 在商品表上创建触发器,当商品被删除时,自动更新订单表中的

商品信息:

```sql

CREATE TRIGGER update_order_product

AFTER DELETE ON products

FOR EACH ROW

BEGIN

UPDATE orders SET product_id = NULL WHERE product_id

= t_id;

END;

```

10. 在员工表上创建触发器,当员工的状态从在职变为离职时,自

动将该员工从项目表中移除:

```sql

CREATE TRIGGER remove_employee_from_project

AFTER UPDATE ON employees

FOR EACH ROW

BEGIN

IF = '离职' THEN

DELETE FROM projects WHERE employee_id =

ee_id;

END IF;

END;

```

以上是10个常见的SQL触发器语句的示例,它们展示了触发器的

灵活应用,可以帮助我们实现复杂的业务逻辑和数据完整性约束。

在实际应用中,我们可以根据具体的需求和业务场景来设计和使用

触发器,提高数据库的功能和性能。

本文标签: 触发器创建表上自动员工