📜  触发器 - SQL (1)

📅  最后修改于: 2023-12-03 15:11:58.138000             🧑  作者: Mango

触发器 - SQL

触发器是一种特殊的存储过程,它在特定的数据库事件发生时自动执行。通常用于实现数据库的业务逻辑和数据完整性约束。在SQL中,触发器可以在INSERT、UPDATE、或 DELETE 数据表数据时触发。下面是几个常用的触发器语句:

创建触发器
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | DELETE | UPDATE [OF column_name, ...]}
ON table_name
[REFERENCING old_row_name AS old NEWROW new_row_name AS new]
[FOR EACH {ROW | STATEMENT}]
[WHEN search_conditions]
trigger_body
删除触发器
DROP TRIGGER trigger_name
触发器的类型
BEFORE 触发器

BEFORE触发器会在语句执行之前触发,可以用于验证数据的完整性和一致性。

CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
  // 触发器的操作逻辑
END;
AFTER 触发器

AFTER触发器会在语句执行之后触发,可以用于监视数据的变化和执行其他操作。

CREATE TRIGGER trigger_name
AFTER INSERT ON table_name
FOR EACH ROW
BEGIN
  // 触发器的操作逻辑
END;
触发器的其他用法
更新时间戳

可以使用触发器在数据表中自动更新时间戳字段。

CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
  NEW.updated_at = NOW();
END;
防止DELETE所有记录

可以使用触发器防止删除数据表中所有记录。

CREATE TRIGGER trigger_name
BEFORE DELETE ON table_name
FOR EACH ROW
BEGIN
  IF (SELECT COUNT(*) FROM table_name) = 1 THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete all records.';
  END IF;
END;

以上便是SQL中触发器的基本用法和一些常见例子。通过使用触发器,我们可以实现更灵活的业务逻辑和数据管理。