SQL TRIGGER Duplicata clé primaire
Résolu/Fermé
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
-
29 avril 2021 à 17:24
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 - 30 avril 2021 à 20:38
yg_be Messages postés 23412 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 décembre 2024 - 30 avril 2021 à 20:38
A voir également:
- SQL TRIGGER Duplicata clé primaire
- Clé windows 10 gratuit - Guide
- Clé usb non détectée - Guide
- Clé bootable windows 10 - Guide
- Clé usb 2to vrai ou faux - Accueil - Stockage
- Cle hdmi tv - Guide
3 réponses
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
29 avril 2021 à 22:03
29 avril 2021 à 22:03
bonjour,
quel est d'après toi le fond du problème?
as-tu conçu ces tables?
quel est d'après toi le fond du problème?
as-tu conçu ces tables?
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
30 avril 2021 à 12:45
30 avril 2021 à 12:45
Comme je vous l'ai dis plus haut, j'ai retiré le auto_increment dès le début comme vous dite pas de sens deplus aucun changement... le suppliers n'en prenez pas compte c'est comme si je vous disais le auto-increment a était écrit par moi, j'ai pas fais attention en l'écrivant,
il ne peut y avoir plusieurs commandes pour le même produits cela reste idem.
Donc j'ai ma table products qui veux dire produit en français.
Il y a dedans un pro_id exemple 8
un pro_stock qui est le stock physique exemple 6
et un pro_stock_alert qui est le stock d'alerte qui est de 5.
Alors mntn à chaque fois que je modifie mon pro_stock 8, 10, 100 il n'y rien ma valeur est supérieur au pro_stock_alert.
Mais si le pro_stock est inférieur au pro_stock_alert, moins de 5 ,une ligne se crée dans ma table commander_article avec le pro_id qui correspond au codart, qte au stock réel restant et date à la date du jour de la modification.
il ne peut y avoir plusieurs commandes pour le même produits cela reste idem.
Donc j'ai ma table products qui veux dire produit en français.
Il y a dedans un pro_id exemple 8
un pro_stock qui est le stock physique exemple 6
et un pro_stock_alert qui est le stock d'alerte qui est de 5.
Alors mntn à chaque fois que je modifie mon pro_stock 8, 10, 100 il n'y rien ma valeur est supérieur au pro_stock_alert.
Mais si le pro_stock est inférieur au pro_stock_alert, moins de 5 ,une ligne se crée dans ma table commander_article avec le pro_id qui correspond au codart, qte au stock réel restant et date à la date du jour de la modification.
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
30 avril 2021 à 14:12
30 avril 2021 à 14:12
si tu as retiré le auto_increment dès le début, peux-tu alors montrer le code que tu utilises?
quand tu écris "une ligne se crée dans ma table", c'est ce que tu souhaites, ou c'est ce qui se passe?
je trouve que ces deux phrases sont contradictoires:
1) il ne peut y avoir plusieurs commandes pour le même produit
2) à chaque fois que je modifie mon pro_stock, si le pro_stock est inférieur au pro_stock_alert, une ligne se crée dans ma table commander_article
comment veux-tu créer une ligne à chaque fois, et n'en avoir qu'une par produit?
quand tu écris "une ligne se crée dans ma table", c'est ce que tu souhaites, ou c'est ce qui se passe?
je trouve que ces deux phrases sont contradictoires:
1) il ne peut y avoir plusieurs commandes pour le même produit
2) à chaque fois que je modifie mon pro_stock, si le pro_stock est inférieur au pro_stock_alert, une ligne se crée dans ma table commander_article
comment veux-tu créer une ligne à chaque fois, et n'en avoir qu'une par produit?
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
30 avril 2021 à 20:10
30 avril 2021 à 20:10
Alors voilà le code que j'ai enfin réussi à corriger dans ma table 'commander_articles' , j'ai retiré le auto_increment mais aussi le primary key !! et cela a fonctionné. Et pour ta question c'était ce que je souhaité oui mais juste pour la seconde entrée.
La première update entrée comme la table 'commander_articles était vide l'ajout fonctionné mais c'était s'il on rentré une nouveau update par dessus ou ca bloqué a cause du primary key, il y en avais 2 celui de products également d'où le duplicata.
Ce que l'on veux c'est juste une alerte si le stock et inférieur au stock alerte on a juste en gros une table qui représente "produit" et une table qui représente une "alerte". Et oui il peux y avoir plusieurs commandes pour le même produit une erreur illogique de ma part désolé.
Voici le code corrigé
Je t'invite à créer une ddb et rentré exactement mon code de tout en haut ensuite update les 3 requête dans l'ordre.
ps : pour le premier j'ai oublier where pro_id = .
Ensuite tu va voir qu'au 3eme update tu aura l'erreur.
Modifie juste la table `commander_articles` juste ici et tu verra ou je voulais en venir et quel était concrètement mon soucie expliqué n'est pas chose aisé.
MERCI.
La première update entrée comme la table 'commander_articles était vide l'ajout fonctionné mais c'était s'il on rentré une nouveau update par dessus ou ca bloqué a cause du primary key, il y en avais 2 celui de products également d'où le duplicata.
Ce que l'on veux c'est juste une alerte si le stock et inférieur au stock alerte on a juste en gros une table qui représente "produit" et une table qui représente une "alerte". Et oui il peux y avoir plusieurs commandes pour le même produit une erreur illogique de ma part désolé.
Voici le code corrigé
DROP TABLE IF EXISTS `commander_articles`; CREATE TABLE IF NOT EXISTS `commander_articles` ( `codart` INT(10) UNSIGNED NOT NULL, `qte` INT NOT NULL, `date` DATE NOT NULL, FOREIGN KEY(`codart`) REFERENCES `products`(`pro_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Je t'invite à créer une ddb et rentré exactement mon code de tout en haut ensuite update les 3 requête dans l'ordre.
ps : pour le premier j'ai oublier where pro_id = .
Ensuite tu va voir qu'au 3eme update tu aura l'erreur.
Modifie juste la table `commander_articles` juste ici et tu verra ou je voulais en venir et quel était concrètement mon soucie expliqué n'est pas chose aisé.
MERCI.
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
30 avril 2021 à 20:38
30 avril 2021 à 20:38
peux-tu alors marquer la discussion comme résolue?
29 avril 2021 à 23:22
Et pour réponse à ta question pour moi le fond du problème c'est la clé primaire qui, elle fait que chaque id doit être unique dans toute la table... d’où le duplicata (plus de 1 id). Donc je pense qu'il faut logiquement que je trouve le moyen de n'avoir qu'1 ligne par n° produit dans cette table ?
30 avril 2021 à 09:56
tu dois définir tes tables en fonction de ta situation, et non le contraire.
peux-tu, oui ou non, avoir plusieurs commandes pour le même article? si oui, ta table "commandes" est mal conçue.
30 avril 2021 à 10:03
pourquoi l'as-tu écrit en ligne 19?
30 avril 2021 à 11:28
30 avril 2021 à 12:07
Tout cela me semble de moins en moins clair. Que vient faire "suppliers" dans ta dernière phrase? Je pense préférable de ne pas mélanger plusieurs langues dans la même phrase.
Prends peut-être le temps d'expliquer en français à quoi servent chacun des champs de tes tables.