Bonjour,

me voilà bloquer depuis plusieurs jours sur comment bloquer ma table à partir de N enregistrement ?
En effet j'ai une table inscription dans ma base mais j'aimerais le bloquer à partir 50 enregistrements par exemple. Donc il n'y aura plus d'inscription à partir de 50 enregistrements.

Le soucis c'est que je ne vois pas du tout par où commencer ? que dois je faire ?

J'ai vu sur le net les histoires de lock read/write table , ou encore de trigger ?

Si seulement ou vous pouvez m'aider ou tout simplement me donner une piste ? Sachant que je ne veux pas juste qu'on puisse insérer dans la base à partir de 50 enregistrements.

2 réponses


betaWeb
Réponse acceptée

Salut,

Oui, tu peux utiliser un trigger (il faut tester je ne suis pas sûr de moi ^^) :

delimiter $$
CREATE TRIGGER registerInsert
   BEFORE INSERT ON <ici le nom de ta table>
 BEGIN
   IF (SELECT COUNT(*) FROM <ici le nom de ta table>) >= 50 THEN
    -- ce que tu souhaites faire s'il y a plus de 50 enregistrements
   END if;
 END$$
delimiter ;
Bessino
Auteur

Merci betaWeb,

alors voici mon code , mais il ne fonctionne pas, je ne sais pas si c'est parce que j'ai le trigger au niveau du php.

$req = 'SELECT COUNT(*) AS nbLignes FROM maTable' OR die(mysqli_error());

    $triggerBeginInsert = ' delimiter $$ 
                                CREATE TRIGGER registerInsert 
                                BEFORE INSERT ON maTable
                                BEGIN 
                                    IF ("'.$req.'") >= 50 THEN 
                                        "'.$reponse = mysqli_query($req);.'"
                                        "'.$row = mysqli_fetch_assoc($reponse);.'"
                                        "'.$result = $row['nbLignes'];.'"
                                        "'.echo json_encode($result, JSON_NUMERIC_CHECK);.'"
                                    END if;
                                END$$
                            delimiter ;';

    mysqli_query($triggerBeginInsert);