I want a trigger to DELETE from 2 tables in MySQL

后端 未结 5 1658
渐次进展
渐次进展 2020-12-10 13:16

I have 3 MySQL tables (food, apple, and orange).

I want to delete rows from:

apple(idapple, iduser, name) 
ora         


        
5条回答
  •  有刺的猬
    2020-12-10 13:48

    MySQL walkthrough of making a trigger to delete two tables with one trigger:

    1. Login:

    el@apollo:~$ mysql -u root -p
    Enter password: 
    mysql> use your_database;
    Database changed
    

    2. Create some test tables and insert rows:

    mysql> create table derp(derp1 INT);
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> create table foo(foo1 INT);
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> create table bar(bar1 INT);
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> insert into derp values (1);
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into foo values (1);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into bar values (1);
    Query OK, 1 row affected (0.00 sec)
    

    3. Make the trigger:

    mysql> delimiter //
    mysql> create trigger delete_foo_and_bar_when_derp_is_deleted
        -> after delete on derp
        -> for each row
        -> begin
        -> delete from foo where foo1=OLD.derp1;
        -> delete from bar where bar1=OLD.derp1;
        -> end//
    Query OK, 0 rows affected (0.02 sec)
    

    4. See the tables exist and all three are populated.

    mysql> delimiter ;
    mysql> select * from derp;
    +-------+
    | derp1 |
    +-------+
    |     1 |
    +-------+
    1 row in set (0.00 sec)
    
    mysql> select * from foo;
    +------+
    | foo1 |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)
    
    mysql> select * from bar;
    +------+
    | bar1 |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)
    

    5. Delete from derp

    mysql> delete from derp where derp1 = 1;
    Query OK, 1 row affected (0.01 sec)
    

    6. See that derp, foo, and bar are empty now:

    mysql> select * from derp;
    Empty set (0.00 sec)
    
    mysql> select * from foo;
    Empty set (0.00 sec)
    
    mysql> select * from bar;
    Empty set (0.00 sec)
    

提交回复
热议问题