mysql觸發器new和old區別 阿星小棧

2021-08-29 10:28:45 字數 2019 閱讀 4608

mysql觸發器new old詳解

mysql觸發器new old:

"new . column_name"或者"old . column_name".這樣在技術上處理(new | old . column_name)新和舊

的列名屬於建立了過渡變數("transition variables")。

對於insert語句,只有new是合法的;對於delete語句,只有old才合法;而update語句可以在和new以及

old同時使用。下面是乙個update中同時使用new和old的例子。

create trigger tr1  

before update on t22   

for each row   

begin   

set @old = old.s1;   

set @new = new.s1;   

end;

現在如果t21表中的s1列的值是55,那麼執行了"update t21 set s1 = s1 + 1"之後@old的值會變成55,

而@new的值將會變成56。

觸發器的執行間隔:for each row子句通知觸發器每隔一行執行一次動作,而不是對整個表執行一次。

列值遞增:

create table a(  

id int primary key auto_increment,##設定為自動遞增  

name varchar(10)  

);設定初始值為1000 :

alter   table   tablename   auto_increment=1000;

example:

drop trigger if exists `timeline_insert`;

create trigger timeline_insert

before insert on teacher_timelineforeach row

begin

declare temp_org_id int(11);

select org_id into temp_org_id from teacher_class where id=new.class_id;

set new.org_id=temp_org_id ;

end;

drop trigger if exists `timeline_update`;

create trigger timeline_update

before insert on teacher_timelineforeach row

begin

declare temp_org_id int(11);

select org_id into temp_org_id from teacher_class where id=new.class_id;

set new.org_id=temp_org_id ;

end;

drop trigger if exists `class_update`;

create trigger class_update

before insert on teacher_classforeach row

begin

update teacher_timeline set org_id = old.org_id  where class_id = old.id;

end;

mysql觸發器 NEW與OLD解析

mysql觸發器之 new與old解析mysql觸發器中,new關鍵字,和 ms sql server 中的 inserted 和 deleted 類似,mysql 中定義了 new 和 old,用來表示觸發器的所在表中,觸發了觸發器的那一行資料。具體地 在 insert 型觸發器中,new 用來表...

mysql 觸發器OLD和NEW關鍵字

使用old和new關鍵字,能夠訪問受觸發程式影響的行中的列 old和new不區分大小寫 在insert觸發程式中,僅能使用new.col name,沒有舊行。在delete觸發程式中,僅能使用old.col name,沒有新行。在update觸發程式中,可以使用old.col name來引用更新前的...

觸發器中OLD和NEW的使用

一 old和new在oracle中不區分大小寫 二 old和new可以用在declare中也可以用在begin裡的sql語句 只會在begin中的sql語句裡用 三 old表示插入之前的值,new表示新插入的值 old用在刪除和修改,new用在新增和修改 但是用delete new值也沒有報錯,不知...