찾다
데이터 베이스MySQL 튜토리얼mysql学习记录(十二)--触发器_MySQL

一、理论:
1.触发器不能使用采用call的动态sql,不能直接返回数据到客户端
2.不能在触发器中使用开始或者结束事务的语句
3.触发器只能在支持事务的表中回滚

二、实践:

 

mysql> use test1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> create table film_text(
    -> film_id int(11),
    -> title varchar(20),
    -> description varchar(180)
    -> ) engine = innodb charset = utf8 ;
Query OK, 0 rows affected (0.05 sec)

mysql> create table film(
    -> film_id int(11),
    -> title varchar(20),
    -> description varchar(180)
    -> ) engine = innodb charset = utf8 ;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE `tri_demo` (
    ->   `id`  int(11) auto_increment not null primary key,
    ->   `note` varchar(50) DEFAULT NULL
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
Query OK, 0 rows affected (0.03 sec)

mysql> create trigger ins_film_bef
    -> before insert on film for each row begin
    -> insert into tri_demo(note) values ('before insert');
    -> end;
    -> $$
Query OK, 0 rows affected (0.02 sec)

mysql> create trigger ins_film_aft
    -> after insert on film for each row begin
    -> insert into film_text(title) values ('after insert');
    -> end;
    -> $$
Query OK, 0 rows affected (0.02 sec)

mysql> create trigger upd_film_bef
    -> before update on film for each row begin
    -> insert into tri_demo(note) values ('before update');
    -> end;
    -> $$
Query OK, 0 rows affected (0.00 sec)

mysql> create trigger upd_film_aft
    -> after update on film for each row begin
    -> insert into tri_demo(note) values ('after update');
    -> end;
    -> $$
Query OK, 0 rows affected (0.02 sec)
mysql> delimiter ;

mysql> insert into film values ( 1,'film_name','film_description');
Query OK, 1 row affected (0.00 sec)

mysql> select * from film;
+---------+-----------+------------------+
| film_id | title     | description      |
+---------+-----------+------------------+
|       1 | film_name | film_description |
+---------+-----------+------------------+

mysql> select * from tri_demo;
+----+---------------+
| id | note          |
+----+---------------+
|  1 | before insert |
+----+---------------+

mysql> update film set title='film_update' where film_id = 1;
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> select * from film;
+---------+--------------------+--------------------------+
| film_id | title              | description              |
+---------+--------------------+--------------------------+
|       1 | film_update        | film_description         |
+---------+--------------------+--------------------------+
1 rows in set (0.00 sec)

mysql> select * from tri_demo;
+----+---------------+
| id | note          |
+----+---------------+
|  1 | before insert |
|  2 | before update |
|  3 | after update  |
+----+---------------+
3 rows in set (0.00 sec)

mysql> show triggers \G;
*************************** 1. row ***************************
             Trigger: ins_film_bef
               Event: INSERT
               Table: film
           Statement: begin
insert into tri_demo(note) values ('before insert');
end
              Timing: BEFORE
             Created: NULL
            sql_mode: 
             Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
*************************** 2. row ***************************
             Trigger: ins_film_aft
               Event: INSERT
               Table: film
           Statement: begin
     insert into film_text(title) values ('after insert');
     end
              Timing: AFTER
             Created: NULL
            sql_mode: 
             Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
*************************** 3. row ***************************
             Trigger: upd_film_bef
               Event: UPDATE
               Table: film
           Statement: begin
insert into tri_demo(note) values ('before update');
end
              Timing: BEFORE
             Created: NULL
            sql_mode: 
             Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
*************************** 4. row ***************************
             Trigger: upd_film_aft
               Event: UPDATE
               Table: film
           Statement: begin
insert into tri_demo(note) values ('after update');
end
              Timing: AFTER
             Created: NULL
            sql_mode: 
             Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
4 rows in set (0.01 sec)

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何隐藏文本直到在 Powerpoint 中单击如何隐藏文本直到在 Powerpoint 中单击Apr 14, 2023 pm 04:40 PM

如何在 PowerPoint 中的任何点击之前隐藏文本如果您希望在单击 PowerPoint 幻灯片上的任意位置时显示文本,那么设置起来既快速又容易。要在 PowerPoint 中单击任何按钮之前隐藏文本:打开您的 PowerPoint 文档,然后单击“插入 ”菜单。单击新幻灯片。选择空白或其他预设之一。仍然在插入菜单中,单击文本框。在幻灯片上拖出一个文本框。单击文本框并输入您

oracle如何添加触发器oracle如何添加触发器Dec 12, 2023 am 10:17 AM

在Oracle数据库中,您可以使用CREATE TRIGGER语句来添加触发器。触发器是一种数据库对象,它可以在数据库表上定义一个或多个事件,并在事件发生时自动执行相应的操作。

如何在MySQL中使用PHP编写触发器如何在MySQL中使用PHP编写触发器Sep 21, 2023 am 08:16 AM

如何在MySQL中使用PHP编写触发器MySQL是一种常用的关系型数据库管理系统,而PHP是一种流行的服务器端脚本语言。在MySQL中使用PHP编写触发器可以帮助我们实现自动化的数据库操作。本文将介绍如何使用PHP来编写MySQL触发器,并提供具体的代码示例。在开始之前,确保已经安装了MySQL和PHP,并且已经建立了相应的数据库表。一、创建PHP文件和数据

mysql的触发器是什么级的mysql的触发器是什么级的Mar 30, 2023 pm 08:05 PM

mysql的触发器是行级的。按照SQL标准,触发器可以分为两种:1、行级触发器,对于修改的每一行数据都会激活一次,如果一个语句插入了100行数据,将会调用触发器100次;2、语句级触发器,针对每个语句激活一次,一个插入100行数据的语句只会调用一次触发器。而MySQL中只支持行级触发器,不支持预语句级触发器。

如何在MySQL中使用PHP编写自定义触发器和存储过程如何在MySQL中使用PHP编写自定义触发器和存储过程Sep 20, 2023 am 11:25 AM

如何在MySQL中使用PHP编写自定义触发器和存储过程引言:在开发应用程序时,我们经常需要在数据库层面进行一些操作,如插入、更新或删除数据。MySQL是一个广泛使用的关系型数据库管理系统,而PHP是一种流行的服务器端脚本语言。本文将介绍如何在MySQL中使用PHP编写自定义触发器和存储过程,并提供具体的代码示例。一、什么是触发器和存储过程触发器(Trigg

如何在MySQL中使用Python编写自定义触发器如何在MySQL中使用Python编写自定义触发器Sep 20, 2023 am 11:04 AM

如何在MySQL中使用Python编写自定义触发器触发器是MySQL中的一种强大的功能,它可以在数据库中的表上定义一些自动执行的操作。而Python则是一种简洁而强大的编程语言,能够方便地与MySQL进行交互。本文将介绍如何使用Python编写自定义触发器,并提供具体的代码示例。首先,我们需要安装并导入PyMySQL库,它是Python与MySQL数据库进行

如何使用MySQL的触发器实现数据的自动归档如何使用MySQL的触发器实现数据的自动归档Aug 02, 2023 am 10:37 AM

如何使用MySQL的触发器实现数据的自动归档引言:在现代数据管理领域,数据的自动归档和清理是一个重要而又常见的需求。随着数据量的增加,保留完整的历史数据会占用过多的存储资源,并且会降低查询性能。MySQL的触发器提供了实现这一需求的有效方法。本文将介绍如何使用MySQL的触发器来实现数据的自动归档。一、什么是MySQL的触发器MySQL的触发器是一种特殊的存

MySQL触发器中参数的使用方法MySQL触发器中参数的使用方法Mar 16, 2024 am 09:27 AM

MySQL触发器是一种在数据库管理系统中用于监控特定表的操作,并根据预定义的条件执行相应操作的特殊程序。在创建MySQL触发器时,我们可以使用参数来灵活地传递数据和信息,让触发器更具通用性和适用性。在MySQL中,触发器可以在特定表的INSERT、UPDATE、DELETE操作前或者后触发执行相应的逻辑。使用参数可以使得触发器更具灵活性,可以根据需要传递需要

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음