事件 儲存過程 觸發器

2022-04-09 02:29:44 字數 2719 閱讀 1723

set foreign_key_checks=0; //無外來鍵約束

show variables like 'event_scheduler'; //檢視事件是否開啟

set global event_scheduler = on; //設定事件為開啟狀態(臨時)注意:如果要永久生效,則要在my.cnf中新增:event_scheduler=on。-- ----------------------------

-- table structure for test_table1

-- ----------------------------

drop table if exists `test_table1`;

create table `test_table1` (

`id` int(11) not null auto_increment comment '自增長主鍵',

`keystr` varchar(32) not null comment '當前登入使用者uuid',

`valuestr` varchar(32) default null comment '事件uuid',

`createtime` datetime default null,

primary key (`id`),

key `keystr` (`keystr`)

) engine=innodb auto_increment=562 default charset=utf8;

drop table if exists `test_table2`;

create table `test_table2` (

`id` int(11) not null auto_increment comment '自增長主鍵',

`keystr` varchar(32) not null comment '當前登入使用者uuid',

`valuestr` varchar(32) default null comment '事件uuid',

`createtime` datetime default null,

primary key (`id`),

key `keystr` (`keystr`)

) engine=innodb default charset=utf8;

-- ----------------------------

-- 建立測試儲存過程,每次往table1中插入2條資料

-- ----------------------------

drop procedure if exists `pro_test1`;

delimiter ;;

create definer=`root`@`localhost` procedure `pro_test1`()

begin

declare i int default 0 ;

set i = 0;

while (i < 2) do

insert into test_table1(keystr,valuestr,createtime) values('key', 'value', now()) ;

set i = i + 1 ;

end while;

end;;

delimiter ;

-- ----------------------------

-- 建立測試事件,從當前時間+間隔3分鐘的時間開始,每分鐘執行一次,呼叫儲存過程

-- ----------------------------

drop event if exists `event_test`;

delimiter ;;

create event `event_test` on schedule every 1 minute starts now()+ interval 3 minute on completion not preserve enable do begin

call pro_test1();

end;;

delimiter ;

-- 當對test_table1表有插入操作時,就觸發,並將table1中的資料插入到table2中,new代表新插入的物件

drop trigger if exists `trigger_insert_test_table2`;

create trigger trigger_insert_test_table2

after insert on test_table1

for each row

begin

replace into test_table2(keystr,valuestr,createtime) values(new.keystr, new.valuestr, new.createtime);

end;

-- 當對test_table1表有刪除操作時,就觸發,並將table2中createtime相同的刪除掉,old代表剛刪除的物件

drop trigger if exists `trigger_delete_test_table2`;

create trigger trigger_delete_test_table2

after delete on test_table1

for each row

begin

delete from test_table2 where createtime=old.createtime;

end;

MySQL 事件 觸發器 儲存過程

事件 檢視事件狀態 show variables like event scheduler 開啟事件 set global event scheduler on 觸發器語法 建立觸發器 delimiter 定義開始和結束的標誌 create trigger triggername after bef...

mysql儲存過程 儲存函式 觸發器 事件

前言 資料庫本身支援儲存過程,不同的資料庫管理系統對儲存過程的支援都不盡相同 從mysql5.0開始,mysql支援儲存過程 儲存函式 觸發器 事件 使用儲存過程的優點 儲存過程執行一次後,其執行的規劃就駐留在高速緩衝儲存器上,以後再次呼叫儲存過程時,只需從高速緩衝儲存器中呼叫以編譯好的二進位制 執...

觸發器 儲存過程

1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...