Bloquer insertion dans la bdd à partir de N enregistrement ?

Par Bessino, il y a 9 ans


Base de données MySQL

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, il y a 9 ans

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, il y a 9 ans

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);