bonjour à tous!
j'aimerais savoir si il existe un moyen de limiter le nombre d'enregistrement dans une table d'une base mysql.Je voudrais par exemple limiter le nombre d'insertions possibles dans une table à 100.
Merci d'avance pour toute réponse
bonjour à tous!
j'aimerais savoir si il existe un moyen de limiter le nombre d'enregistrement dans une table d'une base mysql.Je voudrais par exemple limiter le nombre d'insertions possibles dans une table à 100.
Merci d'avance pour toute réponse
Je ne pense pas qu'il soit possible de limiter le nombre total d'enregistrement dans une base. Par contre, en ajoutant "limit 1,100" à la fin de toutes les requêtes d'ajout, on devrait pouvoir limiter le nombre d'insertions en une seule fois.
Il suffit d'ajouter un trigger qui ROLLBACK la transaction dès que
est vrai.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT COUNT(*) FROM Matable HAVING COUNT(*) > 100
Exemple :
A +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TRIGGER E_LIMITE100 ON MaTable FOR INSERT AS IF EXISTS(SELECT COUNT(*) FROM Matable HAVING COUNT(*) > 100) THEN ROLLBACK TRANSACTION
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour,
je souhaiterai mettre cela en place mais ce ne fonctionne sur ma base mysql 5
probleme de syntaxe
pouvez vous m'aider
Je souhaite le faire dans phpmyadmin
Est-ce possible et quelle la syntaxe exacte ?
Merci
MySQL étant très pauvre en SQL et totalement anormatif, il est plus que probable que le code que je vous ais donné ne puisse fonctionner sur MySQL...
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Pourquoi vouloir limiter le nombre de lignes d'une table ?
Que doit-il se passer dans l'application si elle tente d'insérer une 101ème ligne ?
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Cinephil, c'est une fonctionnalité pas si idiote. Par exemple si je dois avoir une table des mois, je dirais que la contrainte de limitation de ligne sera indubitablement toujours de 12 !
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
MySQL ne permet pas de faire un ROLLBACK dans une transaction, ni de soulever une erreur. Il faut donc provoquer sciemment une erreur ; par exemple, en insérant une valeur textuelle dans une ID numérique :
Pour plus d'info sur l'utilisation des triggers pour contrôler les valeurs insérées, cf http://alain-defrance.developpez.com...integre-error/.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 create trigger limite before insert on ta_table for each row begin if (select count(*) from ta_table) >= 100 then set new.id = 'toto' ; end if ; end ;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager