Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

다른 테이블에 행을 삽입하는 MySQL 트리거?

<시간/>

먼저 테이블을 생성해 보겠습니다. CREATE 명령은 테이블을 생성하는 데 사용됩니다.

mysql> create table Table1
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.62 sec)

이제 다른 테이블을 생성해 보겠습니다.

mysql> create table Table2
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.49 sec)

이제 다음은 트리거를 만드는 방법입니다.

mysql> delimiter #
mysql> create trigger Table1Trigger after insert on Table1
   -> for each row
   -> begin
   ->  insert into Table2(id, name) values (new.id, new.name);
   -> end#
Query OK, 0 rows affected (0.29 sec)

mysql> delimiter ;

트리거를 생성하려면 구분자를 변경해야 합니다.

행을 Table1에 삽입하면 트리거가 활성화되고 레코드가 Table2에 삽입됩니다. Table1에 레코드를 삽입하려면.

mysql> insert into Table1 values(1,'John'),(2,'Smith'),(3,'Carol');
Query OK, 3 rows affected (0.28 sec)
Records: 3  Duplicates: 0  Warnings: 0

두 테이블 모두에 레코드가 삽입되어 있는지 확인합니다.

mysql> select *from Table1;

다음은 Table1에 성공적으로 삽입된 레코드를 보여주는 출력입니다.

+------+-------+
| id   | name  |
+------+-------+
|    1 | John  |
|    2 | Smith |
|    3 | Carol |
+------+-------+
3 rows in set (0.00 sec)

두 번째 테이블을 확인하려면

mysql>  select *from Table2;

다음은 Table2에 성공적으로 삽입된 레코드를 보여주는 출력이다.

+------+-------+
| id   | name  |
+------+-------+
|    1 | John  |
|    2 | Smith |
|    3 | Carol |
+------+-------+
3 rows in set (0.00 sec)