2010-08-11 21 views
2

i ont le code MySQL pour les données d'entrée:comment utiliser IGNORE?

$sql = "INSERT IGNORE INTO inspection_report "; 
    $sql.= "(Model,  Serial_number,  Line,  Shift,  Inspection_datetime,   Range_sampling,  Packing, "; 
    $sql.= "Accesories,  Appearance,  Tuner,  General_operation,  Class,  Status,   Remark, "; 
    $sql.= "NIK) "; 
    $sql.= "VALUES ('"; 
    $sql.= $Model."','".$Serial_number."', '".$Line."','".$Shift."','".postVar('insp_date')." ".postVar('time')."','".$Range_sampling."','".$Packing."','"; 
    $sql.= $Accesories."','".$Appearance."','".$Tuner."','".$General_operation."','".$Class."','".$Status."','".$Remark."','"; 
    $sql.= $NIK."')"; 

je veux utiliser IGNORE.but comment empêcher double seulement au modèle, numéro_de_série, Ligne?

Répondre

2

De la documentation

INSERT

Si vous utilisez le mot-clé IGNORE, les erreurs qui se produisent lors de l'exécution l'instruction INSERT sont traités comme des avertissements à la place. Par exemple, sans IGNORE, une ligne qui fait double emploi avec une existante index UNIQUE ou PRIMARY KEY valeur dans le tableau provoque une erreur de clé et la déclaration est annulée. Avec IGNORE, la ligne n'est toujours pas insérée, mais aucune erreur n'est émise .

Alors qui me dit que ce soit Model,Serial_number,Line doit être la clé primaire, ou vous devez créer un index unique sur ces colonnes.

+0

Devrais-je changer le numéro de modèle, numéro de série, ligne devenir Unique? – klox

+1

Si Model, Serial_Number, Line n'est pas déjà votre clé primaire de table, alors oui, vous devez créer un index Unique pour ces colonnes. –