MySQL 触发器未实现功能

背景

初学mysql,按照书上写了代码

代码

-- 创建触发器的代码
create trigger update_vendor before update on vendors
for each row set new.vend_state=Upper(new.vend_state);

这个代码想实现插入州名时,无论大小写都会让州名变成大写

--- 插入代码
insert into vendors
values (1007,'Jk L','11 Main Street','SouthField','mi','44444','USA');

结果

img

第七行的 vend_state 没有变成大写 还是 'MI'

因为你触发器监视的是update 动作,而不是insert动作,因此插入并不会触发,
before update on 应该改成 after insert on ,才会在插入之后触发

插入完了之后,还需要commit.

因为你写的before,那么此时第7行数据还没有插入,只能修改另外6行的数据
当第7行插入完毕,触发器不会再次执行
如果你最后插入的也要修改,那么改成after
-=-=-
另,你应该在before里直接修改当前插入的数据,而不要去数据库里遍历
你现在只有7条数据,不觉得有什么
如果等你的数据变成10万条,你猜会怎样