codice:
create table if not exists prova_trigger (
id int not null auto_increment primary key,
id1 int,
id2 int,
valore1 int,
valore2 int,
valore3 int,
unique index unico (id1,id2)
) engine=myisam;
delimiter //
create trigger inserimento before insert on prova_trigger
for each row
begin
declare minimo integer;
declare massimo integer;
set minimo = least(new.id1,new.id2);
set massimo = greatest(new.id1,new.id2);
set NEW.id1 = minimo;
set NEW.id2 = massimo;
end;
//
delimiter ; //
delimiter //
create trigger aggiornamento before update on prova_trigger
for each row
begin
declare minimo integer;
declare massimo integer;
set minimo = least(new.id1,new.id2);
set massimo = greatest(new.id1,new.id2);
set NEW.id1 = minimo;
set NEW.id2 = massimo;
end;
//
delimiter ; //
insert into prova_trigger (id1,id2,valore1,valore2,valore3) values (1,2,3,4,5); /* a buon fine*/
insert into prova_trigger (id1,id2,valore1,valore2,valore3) values (2,3,4,5,6); /* a buon fine*/
insert into prova_trigger (id1,id2,valore1,valore2,valore3) values (2,1,4,5,6);
/*
Query : insert into prova_trigger (id1,id2,valore1,valore2,valore3) values (2,1,4,5,6);
Error Code : 1062
Duplicate entry '1-2' for key 'unico'
*/
update prova_trigger set id1 = 2, id2 = 1 where id = 2;
/*Query : update prova_trigger set id1 = 2, id2 = 1 where id = 2
Error Code : 1062
Duplicate entry '1-2' for key 'unico'
*/