我们如何创建和使用MySQL触发器?
为了创建一个新的触发器,我们需要使用CREATE TRIGGER语句。它的语法如下-
CREATE TRIGGER trigger_name trigger_time trigger_eventON 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