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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效