mysql触发器之姓名转姓名拼音

人员表people 字段:id,peopleNumber,name,namePinyin,sex,birthday,nation。

namePinyin不用填写,根据name自动生成。

wordlib为字库表,内容为文字拼音对照

创建表

create table people(
id int auto_increment primary key,
peopleNumber varchar(18),
name varchar(20),
namePinyin varchar(50),
sex varchar(4),
birthday date,
nation varchar(30)
)character set utf8;

插入触发器

drop trigger if exists insert_pinyin;
delimiter //
create trigger insert_pinyin before insert on people
for each row
begin
    declare num int default 1;
    declare single_word varchar(2);
    declare single_py varchar(10);
    declare total_py varchar(50) default '';

    while num <= char_length(new.name) do
        set single_word = substr(new.name,num,1);
        select pinyin into single_py from wordlib where word = single_word;
        set total_py = concat(total_py,single_py);
        set num = num + 1;
    end while;
    set new.namePinyin = total_py;
end
//
delimiter ;

更新触发器

drop trigger if exists update_pinyin;
delimiter //
create trigger update_pinyin before update on people
for each row
begin
    declare num int default 1;
    declare single_word varchar(2);
    declare single_py varchar(10);
    declare total_py varchar(50) default '';

    while num <= char_length(new.name) do
        set single_word = substr(new.name,num,1);
        select pinyin into single_py from wordlib where word = single_word;
        set total_py = concat(total_py,single_py);
        set num = num + 1;
    end while;
    set new.namePinyin = total_py;
end
//
delimiter ;

insert into people (name,sex,peopleNumber,birthday,nation) values('张三','','410306199901010001','19990101','汉族')

 

 

转载于:https://www.cnblogs.com/ywl01/p/3653516.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值