登录  /  注册
MySQL中使用触发器和约束限制记录数
P粉807397973
P粉807397973 2023-11-14 13:35:02
[MySQL讨论组]

我有一个名为 BFFs 的表,用于存储用户 ID 和最好朋友的用户 ID,我想限制该表为每个不同的用户提供 3 个最好的朋友。

我的意思是如果表结构是:

BFFs(userID, userID)

记录是:

(3286, 1212)
(3286, 4545)
(3286, 7878)

在这种情况下,如果 ID 为 3286 的用户不应被允许拥有新记录,例如 (3286, xyzt)。

我写了这个触发器,但我不确定:

CREATE TRIGGER BFFControl
BEFORE INSERT ON BFFs
FOR EACH ROW
DECLARE
    numberOfBFFs INTEGER;
    max_BFFs INTEGER := 3;
BEGIN
    SELECT COUNT(*) INTO numberOfBFFs
    FROM BFFs
    WHERE sender =: NEW.sender

    IF :OLD.sender =: NEW.sender THEN
        RETURN;
    ELSE
        IF numberOfBFFs >= max_BFFs THEN
            RAISE_APPLICATION_ERROR(-20000, 'Users are allowed to have at most thre friends.');
        END IF;
    END IF;
END;
/

我应该如何通过断言或触发器在关系表上重新丰富它?

谢谢

P粉807397973
P粉807397973

全部回复(5)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 https://www.php.cn/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学