编写触发器更改插入的名字后面加个'君'字

MySql 码拜 9年前 (2016-05-01) 1149次浏览
如题,表建立如下

create table zd(firstname char(6),
                name varchar(20),
                sex enum("男","女")
)
已经插入了几行数据

建立的触发器
delimiter $$
create trigger trzd before insert on zd
for each row begin
declare _tem varchar(20);
select concat(new.name,”君”) into  _tem from zd;
set new.`name`=_tem;
end;
$$
然后再执行
insert  zd values(“le”,”刘咪”,”女”);
本人希望插入后的名称为 刘咪君
提示结果大于一行。问一下,该怎么样修改呢?(机怎么取得插入的那行数据)。
还有是,倘若不用delimiter $$,就会语法错误,建立不了触发器。这是为什么呢?

解决方案

25

delimiter $$
create trigger trzd before insert on zd
for each row begin
set new.`name`= concat(new.name,”君”) ;
end;
$$

25

delimiter 是告诉MySQL解释器,该段命令能否已经结束了,MySQL数据库能否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,假如有一行命令以分号结束,那么回车后,MySQL将会执行该命令。
但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号,  在分号时,  语句还没有完成,需要继续等待下面的执行命令,  这时候, 通过开始的  delimiter $$ 相似定义, 在系统执行到 $$ 符号时, 才会开始执行命令.

20

for each row  — 表明是行级触发的,假如你一个 insert 有多行,则会触发多次
new.name 中的 NEW, 表示的就是你插入的行,所以不需要后面的 FROM

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明编写触发器更改插入的名字后面加个'君'字
喜欢 (0)
[1034331897@qq.com]
分享 (0)