CREATE trigger audit_log
after insert on employees_test
for each row
begin
insert into audit (EMP_no,NAME)
values (new.ID,new.NAME);
end;
这段 SQL 语句创建了一个名为 audit_log 的触发器,用于在 employees_test 表进行 INSERT 操作后自动记录审计信息。以下是逐行解释:CREATE TRIGGER audit_log: 声明要创建一个名为 audit_log 的触发器。AFTER INSERT ON employees_test: 指定触发器的触发时机和关联表。此触发器将在 employees_test 表发生 INSERT 操作 之后 触发。也就是说,每当有新记录插入到 employees_test 表中时,该触发器将被激活。FOR EACH ROW: 表明这是一个行级触发器,即对 employees_test 表上每次 INSERT 操作涉及的每一行单独执行。如果一次 INSERT 语句插入多行数据,触发器将对每一行分别触发一次。BEGIN: 标志着触发器程序体的开始。在这之后直到 END; 之间的 SQL 语句将作为触发器的动作,在触发条件满足时执行。INSERT INTO audit (EMP_no, NAME) VALUES (new.ID, new.NAME);: 这是触发器的核心操作,即在触发时执行的 SQL 语句。此语句执行了一个 INSERT 语句,将数据插入到 audit 表中:
- EMP_no 列接收 new.ID 的值。在行级触发器中,new 是一个临时上下文变量,代表触发 INSERT 事件时插入的新行数据。这里取 new.ID,即新插入员工记录的 ID 值。
- NAME 列接收 new.NAME 的值,即新插入员工记录的 NAME 值。 END;: 标志着触发器程序体的结束。至此,触发器定义完成。