MySQL的經典用法 五 觸發器

2021-05-23 06:40:58 字數 4641 閱讀 9148

sql**

create

table`vardata` (   

`id`int(11) not

null

auto_increment,   

`name`varchar(255)default

null

,   

`time` datetime not

null

default

'0000-00-00 00:00:00'

,   

`data`double(15,5)default

'-601.00000'

,   

primary

key(`id`,`time`),   

unique

key`unique` (`name`,`time`)   

)   

create

table`vardata_compute` (   

`id`int(11) not

null

auto_increment,   

`name`varchar(255)default

null

,   

`time` datetimedefault

null

,   

`data`double(15,5)default

null

,   

primary

key(`id`)   

)   

create table `vardata` (

`id` int(11) not null auto_increment,

`name` varchar(255) default null,

`time` datetime not null default '0000-00-00 00:00:00',

`data` double(15,5) default '-601.00000',

primary key (`id`,`time`),

unique key `unique` (`name`,`time`)

)create table `vardata_compute` (

`id` int(11) not null auto_increment,

`name` varchar(255) default null,

`time` datetime default null,

`data` double(15,5) default null,

primary key (`id`)

)

sql**

drop

triggerif exists trigger_insert_59data;   

create

triggertrigger_insert_59data    

after

insert

onvardata    

foreach row    

begin

declaretime_59 datetime;                 

settime_59 = new.time-interval 1second;    

ifminute(new.time)=0 and

second(new.time)=0then

insert

intovardata_computeset

name=new.name,time=time_59,data=new.data;     

endif;      

end;   

drop

triggerif exists trigger_delete_59data;   

create

triggertrigger_delete_59data    

after

delete

onvardata    

foreach row    

begin

declaretime_59 datetime;        

settime_59 = old.time-interval 1second;    

ifminute(old.time)=0 and

second(old.time)=0then

delete

fromvardata_computewhere

time=time_59 and

name=old.name;   

endif;      

end;   

drop

triggerif exists trigger_update_59data;   

create

triggertrigger_update_59data    

after

update

onvardata    

foreach row    

begin

declaretime_59 datetime;        

settime_59 = new.time-interval 1second;    

ifminute(new.time)=0 and

second(new.time)=0then

updatevardata_computesetdata=new.datawhere

time=time_59 and

name=new.name;   

endif;      

end;  

觸發器(五 復合觸發器)

oracle11g開始提供了一種復合觸發器,簡單的說就是支援把語句級和行級觸發器組合在一起。實際應用場景不多,這裡就做個記錄。與單個觸發器語法有所區別 1.單個觸發器的頭部是 before after 動作 on 物件 for 觸發級別 而組合觸發器的頭部是 for 動作 on 物件 compoun...

觸發器 mysql觸發器

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

(Mysql 五)觸發器的使用

1.觸發器的作用 2.delimiter的作用 3.觸發器的實現 4.new 和 old 的使用 1.觸發器的作用 觸發器用於操作乙個表的時候同時能夠操作另乙個表。例如,在a表中,新增乙個資訊,然後同時自動在b表中新增相同的資訊。當然在a表中,新增資料時,同時自動在b表中刪除資料也可以。反正就是只要...