MySQL中的触发器定义及语法介绍
触发器是一种在数据库上执行自动化操作的特殊类型的存储过程。它们在标识的SQL语句执行时自动触发,并且可以在执行之前或之后执行自定义代码。MySQL支持三种类型的触发器:在插入、更新或删除行时触发。下面是MySQL中的触发器定义及语法介绍:
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name FOR EACH ROW
BEGIN
-- 触发器代码
END;
trigger_name
: 触发器的名称,可以自定义。trigger_time
: 触发器的时间,可以是BEFORE
或AFTER
。BEFORE
: 在执行SQL语句之前触发触发器。AFTER
: 在执行SQL语句之后触发触发器。trigger_event
: 触发器的事件,可以是INSERT
、UPDATE
或DELETE
。table_name
: 表的名称,对该表的操作会触发触发器。FOR EACH ROW
: 该选项表示对表中的每一行都会执行触发器代码。BEGIN
和END
: 触发器代码必须放在这两个关键字之间。
下面是一个简单的示例,创建一个在插入数据时触发的触发器:
CREATE TRIGGER new_book_insert
AFTER INSERT
ON books FOR EACH ROW
BEGIN
UPDATE book_inventory SET total_copies = total_copies + 1 WHERE book_id = NEW.book_id;
END;
该触发器会在books
表中插入新书的时候触发。在触发器中,会将书的总库存加一。这个更新操作对应的是book_inventory
表,用NEW
关键字代表books
表中新插入的一行。
下面是另一个示例,创建一个在删除数据时触发的触发器:
CREATE TRIGGER delete_book
BEFORE DELETE
ON books FOR EACH ROW
BEGIN
UPDATE book_inventory SET total_copies = total_copies - OLD.number_of_pages WHERE book_id = OLD.book_id;
END;
该触发器会在从books
表中删除书籍的时候触发。在触发器中,会将书的总库存减去删掉的书的页数。因为要获取删掉的书的页数和ID,所以使用OLD
关键字。这个更新操作对应的是book_inventory
表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql中的触发器定义及语法介绍 - Python技术站