MySql insert trigger outputs NULL -
i want have insert trigger achieve incremental inserts. have 1 column "row_hash" record md5 of each row(here use md5 of column name , category). if new record has same hash value, trigger should skip insert, otherwise allows insert. 
drop trigger if exists test_trigger; delimiter $$ create trigger test_trigger before insert on test_table each row begin     if (select count(*) test_table row_hash = md5(concat_ws('', new.name, new.category))) < 1         insert test_table(_id, name, category, row_hash) values (new._id, new.name, new.category, md5(concat_ws('', new.name, new.category)));     end if; end$$   here test table:
create table test_table(_id varchar(10) primary key, name varchar(10), category varchar(2), row_hash char(32));   when insert 1 record, outputs null on row_hash column.
insert test_table(_id, name, category) values('12344', 'dafas', 'a');  '12344','dafas','a',null   can tell me did wrong on trigger?
if want modify row being inserted, don't need use insert same table. set new.row_hash values.
if want abort insert, you'll have use signal. 
but overall, appears you're doing shouldn't require conditional insert in trigger @ all. unique constraint on name, category. in trigger, make sure row_hash set correctly, constraint take care of aborting if there's duplicate.
edit: changed unique key use row_hash column, suggested.
alter table test_table add unique key (row_hash);  create trigger test_trigger before insert on test_table each row set new.row_hash = md5(concat_ws('', name, category));      
Comments
Post a Comment