MySQL: Integrity error when inserting into database -


so, have 1 column in table gets filled trigger when new entry inserted.

create table `users` ( `idusers` int(11) not null auto_increment, `uid` char(64) default null, `uname` varchar(80) not null, `password` char(128) not null, `mail` varchar(120) not null, primary key (`idusers`), unique key `uname_unique` (`uname`), unique key `mail_unique` (`mail`), unique key `uid_unique` (`uid`) ); delimiter $$ trigger `flask`.`users_before_insert` before insert on `users` each row begin set new.uid = sha2(new.idusers, 256); end$$ delimiter ; 

the problem when try add new row (only have test 1 yet because of error), in trigger value of new.idusers somehow 0 instead of current auto_increment value.
need change in trigger code value used generating uid actual id , not 0?

since idusers auto_increment field, value known after record inserted in table.
use after insert trigger instead of before insert trigger, , update newly inserted record:

delimiter $$ create trigger `flask`.`users_after_insert` after insert on `users` each row begin update users set uid = sha2(new.idusers, 256) idusers = new.idusers; end $$ delimiter ; 

Comments