set default_storage_engine='tokudb'; drop table if exists s,t; create table s (id bigint not null primary key, x bigint); insert into s values (1,0),(2,0),(3,0),(4,0); create table t like s; begin; insert into t select * from s; rollback; create trigger t_trigger before insert on t for each row insert into s values (1000000,0); begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after insert on t for each row insert into s values (1000000,0); begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger before insert on t for each row delete from s where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after insert on t for each row delete from s where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; truncate table t; insert into t values (1,0); create trigger t_trigger before insert on t for each row insert into s values (1000000,0); begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after insert on t for each row insert into s values (1000000,0); begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger before insert on t for each row delete from s where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after insert on t for each row delete from s where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger before insert on t for each row update s set x=x+1 where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after insert on t for each row update s set x=x+1 where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; truncate table t; insert into t values (1,0); create trigger t_trigger before update on t for each row insert into s values (1000000,0); begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after update on t for each row insert into s values (1000000,0); begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger before update on t for each row delete from s where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after update on t for each row delete from s where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger before update on t for each row update s set x=x+1 where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; create trigger t_trigger after update on t for each row update s set x=x+1 where id=1000000; begin; insert into t select * from s on duplicate key update x=t.x+1; ERROR HY000: Can't update table 's' in stored function/trigger because it is already used by statement which invoked this stored function/trigger rollback; drop trigger t_trigger; drop table s,t;