📅  最后修改于: 2023-12-03 15:11:58.138000             🧑  作者: Mango
触发器是一种特殊的存储过程,它在特定的数据库事件发生时自动执行。通常用于实现数据库的业务逻辑和数据完整性约束。在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触发器会在语句执行之前触发,可以用于验证数据的完整性和一致性。
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
// 触发器的操作逻辑
END;
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;
可以使用触发器防止删除数据表中所有记录。
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中触发器的基本用法和一些常见例子。通过使用触发器,我们可以实现更灵活的业务逻辑和数据管理。