mysql利用觸發器在刪除父表的之前先刪除子表記錄

2021-07-25 08:07:08 字數 1273 閱讀 5741

下面sql語句分別建立組織organization表(父表)與成員member表(子表)。注意:這兩個表之間雖然建立了外來鍵約束關係,但不存在級聯刪除選項。

create table organization(

o_no int not null auto_increment,

o_name varchar(32) default '',

primary key(o_no)

)engine=innodb;

create table member(

m_no int not null auto_increment,

m_name varchar(32) default '',

o_no int,

primary key(m_no),

constraint organization_member_fk foreign key (o_no) references organization(o_no)

)engine=innodb;

使用insert語句分別向兩個表中插入若干測試資料。

insert into organization(o_no,o_name) values(null,'o1'),(null,'o2');

insert into member(m_no,m_name,o_no) values(null,'m1',1),(null,'m2',1),(null,'m3',1),(null,'m4',2),(null,'m5',2);

接著建立觸發器。該觸發器實現的功能是:刪除orgnization表中的某些組織資訊前,首先刪除成員member表中與之對應的資訊

delimiter $$

create trigger organization_delete_before_trigger before delete on organization for each row

begin

delete from member where o_no=old.o_no;

end;

$$delimiter ;

下面是查詢和刪除結果顯示

可以看出在刪除organization的o_no=1記錄時,相應的子表記錄也被刪除了

本文為《mysql核心技術與最佳實踐》的學習筆記

mysql 觸發器 臨時表 Mysql觸發器

mysql觸發器 1.建立觸發器 注意 觸發器只能建立在永久表上,不能對臨時表建立觸發器,語法如下 create trigger trigger name trigger time trigger event on table name for each row trigger stmt trigg...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...