1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fix for bug #5890 "Triggers fail for DELETE without WHERE".

If we have DELETE with always true WHERE clause we should not use 
optimized delete_all_rows() method for tables with DELETE triggers,
because in this case we will lose side-effect of deletion.


mysql-test/r/trigger.result:
  Added test for bug #5890 "Triggers fail for DELETE without WHERE".
mysql-test/t/trigger.test:
  Added test for bug #5890 "Triggers fail for DELETE without WHERE".
sql/sql_delete.cc:
  mysql_delete(): 
    We should not use optimized delete_all_rows() method for tables
    with DELETE triggers, because in this case we will lose side-effect
    of deletion.
sql/sql_trigger.h:
  Added new Table_triggers_list::has_delete_triggers() method which
  allows to understand quickly if we have some DELETE triggers in
  our list.
This commit is contained in:
unknown
2004-11-12 17:04:07 +03:00
parent e5fd013fdf
commit bb43e8317f
4 changed files with 42 additions and 2 deletions

View File

@ -174,3 +174,15 @@ create trigger tx1 before insert on t1 for each row set new.x1col = 'x';
insert into t1 values ('y');
drop trigger t1.tx1;
drop table t1;
create table t1 (i int) engine=myisam;
insert into t1 values (1), (2);
create trigger trg1 before delete on t1 for each row set @del_before:= @del_before + old.i;
create trigger trg2 after delete on t1 for each row set @del_after:= @del_after + old.i;
set @del_before:=0, @del_after:= 0;
delete from t1;
select @del_before, @del_after;
@del_before @del_after
3 3
drop trigger t1.trg1;
drop trigger t1.trg2;
drop table t1;