在mysql 8.0 中,触发器里的参数不需要使用declare先定义。直接@parm就可以使用。 因为触发器不支持显示输出的 select ,所以给变量赋值时不要直接select @parm=xx,这样会报错。而是要使用select xx into @parm。
CREATE DEFINER=`root`@`localhost` TRIGGER `trg_ins` BEFORE INSERT ON `table` FOR EACH ROW BEGIN
if length(coalesce(new.sn,''))<'3'
then
select sn
into @sn
from database.table
where id = new.id;
set new.sn = @sn;
end if;
END