89774 2022-10-16 14:42 采纳率: 100%
浏览 16
已结题

关于#mysql#的问题:mysql触发器

触发器
若存在以下表
Create table tblUser
(
UID char(4) primary key,
UName char(3) not null,
UBirthday date not null
)
请为此表设计触发器,tri_check, 检查写入数据的正确性
要求:1、当UName小于2个字符时,消息报错‘必须2个字符以上’
2、当UBirthday 日期大于当前日期,消息报错‘不能大于当前日期’
3、若以上都存在,消息叠加报错

  • 写回答

2条回答 默认 最新

  • honestman_ 2022-10-16 14:48
    关注
    
    CREATE TRIGGER tri_check        #创建触发器
     
    before INSERT                   #和下面一起
     
    on tbluser                      #和下面一起 
     
    for each ROW                    #在数据写入tbluser表之前,对于每一行语句都检查一遍
     
    BEGIN
     
    if CHAR_LENGTH(new.uname)<2 and new.uBirthday>CURDATE() then
     
    set @msg='必须2个字符以上
                        不能大于当前日期';
     
    SIGNAL SQLSTATE '45000' set message_text=@msg;  #如果符合以上两个条件,报错输出设定好的语句
     
    end if;
     
    if CHAR_LENGTH(new.uname)<2 then
     
    set @msg='必须2个字符以上';
     
    SIGNAL SQLSTATE '45000' set message_text=@msg; #如果符合以上一个条件,报错输出设定好的语句
     
     
    end if;
     
    if new.ubirthday>CURDATE() then
     
    set @ts='不能大于当前日期';
     
    SIGNAL SQLSTATE '45000' set message_text=@ts;  #如果符合以上一个条件,报错输出设定好的语句
     
    end if;
     
    end
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月24日
  • 已采纳回答 10月16日
  • 创建了问题 10月16日

悬赏问题

  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏
  • ¥15 Wanted but not invoked:Actually, there were zero interactions with this moc
  • ¥20 怎么驱动tb6612
  • ¥15 Arcgis 3D效果点要素