MySQL 中如何在觸發器裡中斷記錄的插入或更新?

2021-05-01 07:07:44 字數 2848 閱讀 3992

mysql 不象其它有些資料庫可以在觸發器中丟擲異常來中斷當然觸發器的執行以阻止相應的sql語句的執行。在mysql的目錄版本中還無法直接丟擲異常。這樣我們如何實現呢?

下面是一種實現的方法。思路就是想辦法在觸發器中利用乙個出錯的語句來中斷**的執行。

mysql

>

create

table

t_control(id

intprimary

key);

query ok,

0rows affected (

0.11

sec)

mysql

>

insert

into

t_control

values(1

);query ok,

1row affected (

0.05

sec)

mysql

>

create

table

t_bluerosehero(id

intprimary

key,col

int);

query ok,

0rows affected (

0.11

sec)

mysql

>

delimiter

//mysql

>

create

trigger

tr_t_bluerosehero_bi before

insert

ont_bluerosehero

->

foreach row

->

begin

->

ifnew.col

>

30then

->

insert

into

t_control

values(1

);->

endif

;->

end;

->

//query ok,

0rows affected (

0.08

sec)

mysql

>

delimiter ;

mysql

>

mysql

>

insert

into

t_bluerosehero

values(1

,20);query ok,

1row affected (

0.25

sec)

mysql

>

insert

into

t_bluerosehero

values(2

,40);error

1062

(23000

): duplicate entry '1

'for

key'

primary

'mysql

>

mysql

>

select

*from

t_bluerosehero;+--

--+------+

|id

|col  |+

----+------+|1

|20|+

----+------+

1row

inset

(0.00

sec)

mysql

> 或者

mysql

>

delimiter

//mysql

>

create

trigger

tr_t_bluerosehero_bi before

insert

ont_bluerosehero

->

foreach row

->

begin

->

declare

i int

;->

ifnew.col

>

30then

->

insert

into

***x

values(1

);->

endif

;->

end;

->

//query ok,

0rows affected (

0.06

sec)

mysql

>

delimiter ;

mysql

>

delete

from

t_bluerosehero;

query ok,

3rows affected (

0.05

sec)

mysql

>

insert

into

t_bluerosehero

values(1

,20);query ok,

1row affected (

0.06

sec)

mysql

>

insert

into

t_bluerosehero

values(2

,40);error

1146

(42s02):

table

'csdn.***x

'doesn

't exist

mysql>

MySQL 中如何在觸發器裡中斷記錄的插入或更新?

mysql 不象其它有些資料庫可以在觸發器中丟擲異常來中斷當然觸發器的執行以阻止相應的sql語句的執行。在mysql的目錄版本中還無法直接丟擲異常。這樣我們如何實現呢?下面是一種實現的方法。思路就是想辦法在觸發器中利用乙個出錯的語句來中斷 的執行。mysql create table t contr...

觸發器 mysql觸發器

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

MySQL中觸發器

觸發器是與某個事件相關的特殊儲存過程,與儲存過程不同的是,儲存過程需要用 call 呼叫而出發器不需要使用call呼叫呼叫。也就是自己預先定義好了,當某個事件發生時,就會自動出發觸發器進行相關的操作。僅對 insert update delete 有效,對select無。trigger name 觸...