夜静清幽 2023-08-10 17:01 采纳率: 80%
浏览 4
已结题

触发器限制了不能插入但是网页程序还是可以插入

设置了触发器 在插入大于100的ID时就会提示爆满
触发器语句
CREATE TRIGGER newuser BEFORE INSERT ON tk_user
FOR EACH ROW BEGIN
IF DATE(new.ID) > 100 THEN
THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "已爆满";
END IF;
END;

在Navicat中新增数据正常提示爆满

img

但是在PHP网页中也是insert 但是却还是正常插入

img


代码:

img

这是什么原因呢,该怎么解决。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-10 18:27
    关注

    【以下回答由 GPT 生成】

    这个问题的原因是,Navicat是直接通过MySQL客户端连接数据库进行操作的,而PHP网页程序是通过网页服务器(如Apache)与数据库进行交互的。在PHP网页中执行插入操作时,触发器的限制可能没有被执行。

    解决这个问题的方法有两种:

    1. 在PHP代码中手动检查插入的ID,如果大于100则不执行插入操作,可以使用以下代码示例:
    <?php
    // 获取待插入的ID
    $id = 101; // 演示用,实际情况应根据实际需求获取ID
    
    // 判断是否满足插入条件
    if ($id > 100) {
        echo "已爆满,无法插入数据";
    } else {
        // 执行插入操作
        // ...
        echo "插入数据成功";
    }
    ?>
    
    1. 修改触发器的逻辑,将条件由大于100改为大于等于100,这样即使插入的ID为100,触发器也会限制插入。修改后的触发器语句如下:
    CREATE TRIGGER newuser BEFORE INSERT ON tk_user
    FOR EACH ROW BEGIN
        IF DATE(new.ID) >= 100 THEN
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '已爆满';
        END IF;
    END;
    

    通过这两种方法的任意一种,都可以在PHP网页程序中限制插入大于100的ID。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月21日
  • 已采纳回答 8月13日
  • 创建了问题 8月10日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上