2017-10-18 10 views
0

Je veux créer valider si cela NOUVEAU. Some Field = « » (EST NOT NULL ENTREE JUSTE VIDES) puis texte messange est « [Tableau: personne] - colonne Some Field est pas valide », et j'utiliser cette méthode maintenant:Foreach pour MySQL (In Trigger)

BEGIN 
IF NEW.`Some Field1` = '' THEN 
    SIGNAL SQLSTATE VALUE '45000' 
    SET MESSAGE_TEXT = '[table:person] - `Some Field` column is not valid'; 
END IF; 
IF NEW.`Some Field1` = '' THEN 
    SIGNAL SQLSTATE VALUE '45000' 
    SET MESSAGE_TEXT = '[table:person] - `Some Field` column is not valid'; 
END IF; 
END; 

et cette méthode nous ne pouvons pas faire si trop de valider, je ne comprends toujours pas avec NEW. Some Field, est-ce comme un tableau en php et autre prog. langues

et si même, peut-on utiliser une méthode comme dans HP, je donne un exemple:

$new = array('some1'=>'TEST','some2'=>''); 
foreach($new as $field => $val){ 
    if($val == ''){ 
    echo "[table:person] - `{$field}` column is not valid"; 
    //and final we can use continue or return false 
    } 
} 
//And that result is "[table:person] - `some2` column is not valid" 

Répondre

1

https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html - Dans le corps de déclenchement, le vieux et de nouveaux mots clés vous permettent d'accéder aux colonnes dans la lignes affectées par un déclencheur. OLD et NEW sont des extensions MySQL aux triggers; ils ne sont pas sensibles à la casse. Dans un déclencheur INSERT, seul NEW.col_name peut être utilisé; il n'y a pas de vieille rangée. Dans un déclencheur DELETE, seul OLD.col_name peut être utilisé; il n'y a pas de nouvelle ligne. Dans un déclencheur UPDATE, vous pouvez utiliser OLD.col_name pour faire référence aux colonnes d'une ligne avant sa mise à jour et NEW.col_name pour faire référence aux colonnes de la ligne après sa mise à jour. Une colonne nommée avec OLD est en lecture seule

+0

merci pour la réponse, et ... comment obtenir une syntaxe simple maintenant? –

+0

je ne peux pas écrire beaucoup de requêtes pour cela –