J'ai une table appelée BFFs qui stocke les identifiants d'utilisateur et les identifiants d'utilisateur des meilleurs amis, et je souhaite limiter la table à 3 meilleurs amis pour chaque utilisateur différent.
Je veux dire si la structure de la table est :
BFFs(userID, userID)
Le record est :
(3286, 1212) (3286, 4545) (3286, 7878)
Dans ce cas, l'utilisateur avec l'ID 3286 ne doit pas être autorisé à avoir de nouveaux enregistrements, par exemple (3286, xyzt).
J'ai écrit ce déclencheur mais je ne suis pas sûr :
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; /
Comment le ré-enrichir sur la table relationnelle via des assertions ou des triggers ?
Merci
En plus de la réponse d'ypercubes (qui exploite DRI pour appliquer vos règles), vous pouvez également effectuer un LEFT JOIN en utilisant MIN pour obtenir le prochain de 1, 2 ou 3 des trois tables par ID utilisateur
Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé
Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé Canapé
Ajoutez une autre colonne,
FriendNumber
et une contrainte de clé étrangère à la table de référence contenant exactement 3 lignes :Ensuite, vous pouvez ajouter :
Ou comme @gbn l'a suggéré, comme ceci (pour que la colonne soit remplie automatiquement) :
Asafa respecte la loi et envoie un message Asafa respecte la loi et envoie un message Asafa respecte la loi et envoie un message Asafa respecte la loi et envoie un message