Comment bloquer l'INSERT INTO si 2 champs existent déja ?

Comment bloquer l'INSERT INTO si 2 champs existent déja ? - SQL/NoSQL - Programmation

Marsh Posté le 29-03-2016 à 14:30:07    

Bonjour,
 
 
Je cherche une solution pour empêcher de créer doublons dans une table d'inventaire des correctifs intallés sur une machine.
 
J'ai :
 - une table : CREATE TABLE wumachine (id integer primary key, machine VARCHAR(30), winupdate VARCHAR(30), dateupdate VARCHAR(30));
 - un script qui me genere ces incertions. C'est la liste des correctifs microsoft intallés sur une machine.
 
Etc...
INSERT INTO wumachine VALUES ('517','KB982861','5/19/2014');
INSERT INTO wumachine VALUES ('517','KB2830477','2/15/2016');
INSERT INTO wumachine VALUES ('517','KB2592687','2/15/2016');
INSERT INTO wumachine VALUES ('517','KB917607','4/30/2014');
etc...
 
machine = 517
winupdate = KB982861
dateupdate = 5/19/2014
 
Je peux bien sûr n'avoir la liste que sous format CSV...
 
Comment bloquer l'insertion de ligne si le champ "machine" et "winupdate" existe déja ?
L'idée c'est de n'ajouter que les nouvelles mises à jour installés sur la machine depuis le dernier inventaire.
 
Je travaille sur une base MySQL.
Ce n'est pas une base sensible donc pas de réel probleme de performance en cas de requettes un peu lourdes.
 
Merci pour vos propositions d'idées !
 
Bonne journée !
 
 
François.

Reply

Marsh Posté le 29-03-2016 à 14:30:07   

Reply

Marsh Posté le 29-03-2016 à 15:21:47    

insert ignore (ou replace suivant ton besoin) avec clef unique sur machine et winupdate ?


---------------
D3
Reply

Marsh Posté le 31-03-2016 à 23:39:03    

Il suffit de créer une clé primaire (ou un index de type unique) sur le couple de champs machine/winupdate ;)
 
Si tu tentes un insert d'un couple déjà présent, l'insert échouera.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed