MySQL 데이터베이스 보기 트리거 및 MySQL 수정 및 삭제 트리거(DROP TRIGGER)

MySQL 뷰 트리거

트리거 보기는 데이터베이스에 이미 존재하는 트리거의 정의, 상태 및 구문 정보를 보는 것을 의미합니다. MySQL에서 트리거를 보는 방법에는 SHOW TRIGGERS 문과 information_schema 데이터베이스 아래의 트리거 데이터 테이블 쿼리가 포함됩니다. 이 섹션에서는 트리거를 보는 두 가지 방법을 자세히 설명합니다.

트리거 정보를 보기 위한 SHOW TRIGGERS 문

MySQL에서는 SHOW TRIGGERS 문을 통해 트리거의 기본 정보를 확인할 수 있으며 구문 형식은 다음과 같다.

SHOW TRIGGERS;
실시예 1

먼저 데이터 테이블 계정을 생성합니다. 테이블에는 INT 유형의 accnum과 DECIMAL 유형의 amount라는 두 개의 필드가 있습니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> CREATE TABLE account(
    -> accnum INT(4),
    -> amount DECIMAL(10,2));
Query OK, 0 rows affected (0.49 sec)

trigupdate라는 트리거를 생성하고 계정 테이블이 데이터를 업데이트할 때마다 myevent 데이터 테이블에 데이터 조각을 삽입합니다. myevent 데이터 테이블을 생성하기 위한 SQL 문과 실행 결과는 다음과 같습니다.

mysql> CREATE TABLE myevent(
    -> id INT(11) DEFAULT NULL,
    -> evtname CHAR(20) DEFAULT NULL);
Query OK, 0 rows affected (0.26 sec)

trigupdate 트리거를 생성하는 SQL 코드는 다음과 같습니다.

mysql> CREATE TRIGGER trigupdate AFTER UPDATE ON account
    -> FOR EACH ROW INSERT INTO myevent VALUES(1,'after update');
Query OK, 0 rows affected (0.15 sec)

트리거를 보려면 SHOW TRIGGERS 문을 사용합니다.(SHOW TRIGGERS 명령 뒤에 추가하면 \G표시되는 정보가 더 체계화됩니다.) SQL 문과 실행 결과는 다음과 같습니다.

mysql> SHOW TRIGGERS \G
*************************** 1. row ***************************
             Trigger: trigupdate
               Event: UPDATE
               Table: account
           Statement: INSERT INTO myevent VALUES(1,'after update')
              Timing: AFTER
             Created: 2020-02-24 14:07:15.08
            sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
             Definer: root@localhost
character_set_client: gbk
collation_connection: gbk_chinese_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.09 sec)

실행 결과에서 해당 트리거의 기본 정보를 확인할 수 있습니다. 위에 표시되는 정보에 대한 설명은 다음과 같습니다.

  • Trigger는 트리거 이름을 나타냅니다. 여기서 트리거 이름은 trigupdate입니다.
  • 이벤트는 트리거를 활성화하는 이벤트를 나타내며 여기서 트리거 이벤트는 업데이트 작업 UPDATE;
  • 테이블은 활성화된 트리거의 작업 개체 테이블을 나타냅니다. 여기서는 계정 테이블입니다.
  • 명령문은 트리거에 의해 수행되는 작업을 나타냅니다. 여기서는 myevent 데이터 테이블에 데이터 조각을 삽입하는 것입니다.
  • 타이밍은 트리거가 실행되는 시간을 나타내며, 여기서는 업데이트 작업 이후(AFTER)입니다.
  • 그 밖에도 트리거 생성 시간, SQL 모드, 트리거 정의 계정, 문자 집합 등과 같은 몇 가지 정보가 있지만 여기서는 하나씩 소개하지 않습니다.

MySQL 데이터베이스 기본 스킬 전체 연습 icon-default.png?t=N7T8https://edu.csdn.net/course/detail/36210
SHOW TRIGGERS 문은 현재 생성된 모든 트리거에 대한 정보를 보는 데 사용됩니다. 이 문은 지정된 트리거를 쿼리할 수 없으므로 트리거가 적을 때 이 문을 사용하는 것이 편리합니다. 특정 트리거에 대한 정보를 보고 싶거나 데이터베이스에 여러 개의 트리거가 있는 경우 information_schema 데이터베이스의 트리거 데이터 테이블에서 직접 검색할 수 있습니다.

트리거 테이블에서 트리거 정보 보기

MySQL에서는 모든 트리거 정보가 information_schema 데이터베이스의 Triggers 테이블에 저장되며, 쿼리 명령어 SELECT를 통해 확인할 수 있으며, 구체적인 구문은 다음과 같다.

SELECT * FROM information_schema.triggers WHERE trigger_name= '触发器名';

그 중 '触发器名'보려는 트리거의 이름을 지정하는 데 사용되며 작은따옴표로 묶어야 합니다. 이 메소드는 지정된 트리거를 쿼리할 수 있어 사용이 더 편리하고 유연합니다.

실시예 2

trigupdate 트리거를 보려면 아래 SELECT 명령을 사용하십시오. SQL 문은 다음과 같습니다.

SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G

위의 명령은 WHERE를 사용하여 보려는 트리거의 이름을 지정합니다. 실행 결과는 다음과 같습니다.

mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G
*************************** 1. row ***************************
           TRIGGER_CATALOG: def
            TRIGGER_SCHEMA: test
              TRIGGER_NAME: trigupdate
        EVENT_MANIPULATION: UPDATE
      EVENT_OBJECT_CATALOG: def
       EVENT_OBJECT_SCHEMA: test
        EVENT_OBJECT_TABLE: account
              ACTION_ORDER: 1
          ACTION_CONDITION: NULL
          ACTION_STATEMENT: INSERT INTO myevent VALUES(1,'after update')
        ACTION_ORIENTATION: ROW
             ACTION_TIMING: AFTER
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
  ACTION_REFERENCE_OLD_ROW: OLD
  ACTION_REFERENCE_NEW_ROW: NEW
                   CREATED: 2020-02-24 16:07:15.08
                  SQL_MODE: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                   DEFINER: root@localhost
      CHARACTER_SET_CLIENT: gbk
      COLLATION_CONNECTION: gbk_chinese_ci
        DATABASE_COLLATION: latin1_swedish_ci
1 row in set (0.22 sec)

트리거에 대한 자세한 정보는 실행 결과에서 확인할 수 있습니다. 위에 표시되는 정보에 대한 설명은 다음과 같습니다.

  • TRIGGER_SCHEMA는 트리거가 있는 데이터베이스를 나타냅니다.
  • TRIGGER_NAME은 트리거의 이름을 나타냅니다.
  • EVENT_OBJECT_TABLE은 트리거되는 데이터 테이블을 나타냅니다.
  • ACTION_STATEMENT는 트리거가 실행될 때 수행되는 특정 작업을 나타냅니다.
  • ACTION_ORIENTATION의 값은 ROW입니다. 이는 모든 레코드에서 트리거됨을 의미합니다.
  • ACTION_TIMING은 트리거 순간이 AFTER임을 나타냅니다.
  • 그 밖에도 트리거 생성 시간, SQL 모드, 트리거 정의 계정, 문자 집합 등과 같은 몇 가지 정보가 있지만 여기서는 하나씩 소개하지 않습니다.

 
위의 SQL 문 역시 트리거 이름을 지정할 수 없으므로 모든 트리거가 표시됩니다.SQL 문은 다음과 같습니다.

SELECT * FROM information_schema.triggers \G

이 명령문은 트리거 데이터 테이블에 모든 트리거 정보를 표시합니다.

MySQL 수정 및 삭제 트리거(DROP TRIGGER)

원래 트리거를 삭제하고 동일한 이름으로 새 트리거를 생성하여 트리거를 수정할 수 있습니다.

기본 문법

다른  MySQL  데이터베이스 개체와 마찬가지로 DROP 문을 사용하여 데이터베이스에서 트리거를 제거할 수 있습니다.

구문 형식은 다음과 같습니다.

DROP TRIGGER [ IF EXISTS ] [数据库名] <触发器名>

구문은 다음과 같이 설명됩니다.

1) 트리거 이름

삭제할 트리거의 이름입니다.

2) 데이터베이스 이름

선택 과목. 트리거가 상주하는 데이터베이스의 이름을 지정합니다. 지정하지 않으면 현재 기본 데이터베이스입니다.

3) 권한

DROP TRIGGER 문을 실행하려면 SUPER 권한이 필요합니다.

4) 존재하는 경우

선택 과목. 트리거 없이 트리거를 삭제하지 마세요.

注意:删除一个表的同时,也会自动删除该表上的触发器。另外,触发器不能更新或覆盖,为了修改一个触发器,必须先删除它,再重新创建。

트리거 삭제

DROP TRIGGER 문을 사용하여 MySQL에 정의된 트리거를 삭제합니다.

[예제] double_salary 트리거 삭제 입력 SQL 문 및 실행 과정은 다음과 같습니다.

mysql> DROP TRIGGER double_salary;
Query OK, 0 rows affected (0.03 sec)

double_salary 트리거를 삭제한 후 다시 tb_emp6 데이터 테이블에 레코드를 삽입하면 아래와 같이 tb_emp7 데이터 테이블의 데이터가 더 이상 변경되지 않습니다.

mysql> INSERT INTO tb_emp6
    -> VALUES (3,'C',1,200);
Query OK, 1 row affected (0.09 sec)
mysql> SELECT * FROM tb_emp6;
+----+------+--------+--------+
| id | name | deptId | salary |
+----+------+--------+--------+
|  1 | A    |      1 |   1000 |
|  2 | B    |      1 |    500 |
|  3 | C    |      1 |    200 |
+----+------+--------+--------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM tb_emp7;
+----+------+--------+--------+
| id | name | deptId | salary |
+----+------+--------+--------+
|  1 | A    |      1 |   2000 |
|  2 | B    |      1 |   1000 |
+----+------+--------+--------+
2 rows in set (0.00 sec)

다창 수석 데이터베이스 엔지니어 mysql 데이터베이스 실무 교육 icon-default.png?t=N7T8https://edu.csdn.net/course/detail/39021

추천

출처blog.csdn.net/m0_37449634/article/details/135553763