📜  MySQL触发器

📅  最后修改于: 2020-11-19 02:22:46             🧑  作者: Mango

MySQL触发器

在MySQL中,也可以创建触发器。可以设置6种触发器:-

  • 插入之后/之前
  • 更新后/之前
  • 删除后/删除前

1.插入之前/之后触发

在MySQL中,还可以创建AFTER / BEFORE触发器。 AFTER / BEFORE触发器意味着触发器将在插入记录后调用。

句法

CREATE TRIGGER trigger_name
    AFTER/BEFORE INSERT
         ON table_name FOR EACH ROW
         BEGIN
        --variable declarations
        --trigger code
        END;

参数:

trigger_name:要创建的触发器的名称。

插入后/插入前:在插入查询执行之前或之后,它指向触发器。

table_name:在其中创建触发器的表的名称。

步骤1:创建一个表格,例如,student并插入记录。

第2步:创建另一个表,例如,student1,不要插入记录。

步骤3:现在创建AFTER INSERT触发器

查询;

在将“行”插入到“学生”上之后,将触发器插入“ student_insert”,以便将每个行插入到student2值中(null,new.id,“ insertted”,NOW());

步骤4:创建触发器后,现在再次将记录插入到Student表中,它将反映在student2表上。

i)插入学生表ID 6

ii)反映在学生2中。

2.更新后/触发前

在MySQL中,还可以创建AFTER / BEFORE UPDATE触发器。 AFTER / BEFORE UPDATE触发器意味着触发器将在记录更新之后/之前调用。

句法

CREATE TRIGGER trigger_name
    AFTER/BEFORE UPDATE
         ON table_name FOR EACH ROW
         BEGIN
        --variable declarations
        --trigger code
        END;

参数:

trigger_name:要创建的触发器的名称。

更新后:它指示执行触发器更新查询。

table_name:在其中创建触发器的表的名称。

步骤1:创建一个表格,例如,student并插入记录。

步骤2:创建另一个表,例如,student1并插入记录。

步骤3:现在创建AFTER UPDATE触发器

查询:

为每个行更新创建触发器'student_update'之后对'student'进行更新student2 SET name = new.name其中id = id;

步骤4:创建触发器后,现在再次更新学生表中的记录,它将反映在学生2表上。

i)更新学生表ID 6

ii)反映在学生2中。

3.删除之前/之后触发

在MySQL中,还可以创建AFTER / BEFORE DELETE触发器。 AFTER / BEFORE DELETE触发器意味着触发器将在删除记录之后/之前调用。

句法

CREATE TRIGGER trigger_name
    AFTER/BEFORE DELETE
         ON table_name FOR EACH ROW
         BEGIN
        --variable declarations
        --trigger code
        END;

参数:

trigger_name:要创建的触发器的名称。

AFTER / BEFORE DELETE:在执行删除查询之前/之后指向触发器。

table_name:在其中创建触发器的表的名称。

步骤1:创建一个表格,例如,student并插入记录。

步骤2:创建另一个表,例如,student1并插入记录。

步骤3:现在创建AFTER DELETE触发器

查询:

在从学生2的每个学生行中删除“学生”之后,在“学生”中删除后创建触发器“ student_delete”; student.id = student1.id;

步骤4:创建触发器后,现在再次删除学生表中的记录,该记录将反映在学生2表上。

我)删除学生表ID 6

ii)反映在学生2中。

下降触发

在MySQL中,触发器也可以删除。当触发器下降时,将从数据库中将其删除。

句法

Drop Trigger[ IF EXISTS ] Trigger_name;

参数:

Trigger_name:要删除的触发器的名称

例子1

drop Trigger student_update;