我们如何创建和使用MySQL触发器?

为了创建一个新的触发器,我们需要使用CREATE TRIGGER语句。它的语法如下-

CREATE TRIGGER trigger_name trigger_time trigger_event

ON table_name

FOR EACH ROW

BEGIN

...

END;

这里,

  • Trigger_name是触发器的名称,必须将其放置在CREATE TRIGGER语句之后。trigger_name的命名约定可以类似于[trigger time] _ [table name] _ [trigger event]。例如,before_student_update或after_student_insert可以是触发器的名称。

  • Trigger_time是触发激活的时间,可以是BEFORE或AFTER。我们必须在定义触发器时指定激活时间。如果要在对表进行更改之前处理操作,则必须使用BEFORE;如果要在对表进行更改之后处理操作,则必须使用AFTER。

  • Trigger_event可以是INSERT,UPDATE或DELETE。此事件导致触发触发器。触发器只能由一个事件调用。要定义由多个事件调用的触发器,我们必须定义多个触发器,每个事件一个。

  • Table_name是表的名称。实际上,触发器始终与特定表相关联。没有表,触发器将不存在,因此我们必须在“ ON”关键字之后指定表名。

  • BEGIN…END是我们将在其中定义触发器逻辑的块。

示例

假设我们要在创建如下的Student_age表上应用触发器-

mysql> Create table Student_age(age INT, Name Varchar(35));

现在,如果有人尝试插入年龄<0,则以下触发器将自动插入年龄= 0。

mysql> DELIMITER //

mysql> Create Trigger before_inser_studentage BEFORE INSERT ON student_age FOR EACH ROW

BEGIN

IF NEW.age < 0 THEN SET NEW.age = 0;

END IF;

END //

现在,要调用此触发器,我们可以使用以下语句-

mysql> INSERT INTO Student_age(age, Name) values(30, 'Rahul');

mysql> INSERT INTO Student_age(age, Name) values(-10, 'Harshit');

mysql> Select * from Student_age;

+------+---------+

| age  | Name    |

+------+---------+

| 30   | Rahul   |

| 0    | Harshit |

+------+---------+

2 rows in set (0.00 sec)

上面的结果集表明,在表中插入负值将导致触发器插入0。

上面是一个触发器的示例,其中trigger_event为INSERT,trigger_time为BEFORE。

以上是 我们如何创建和使用MySQL触发器? 的全部内容, 来源链接: utcz.com/z/359616.html

回到顶部