2011-06-21 4 views
0

Comment créer un trigger (mysql) qui échouera SQL si certains champs n'ont pas de données?Trigger to fail requête

Voici ma table

CREATE TABLE `new` (
    `id` int(11) DEFAULT NULL, 
    `name` int(11) DEFAULT NULL, 
    `phone` int(11) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 

Let`s dire que j'ai cette requête

INSERT INTO new values(1, 'Bu', ''); 

Je veux cette requête à l'échec s'il n'y a pas de données pour le champ de téléphone.

+1

Pourquoi ne pas simplement au lieu 'INSERT' NULL de la chaîne vide, comme recommandé ici http://stackoverflow.com/questions/6422381/mandatory-field-mysql – Jacob

Répondre

0

champ téléphone est déclaré comme int afin que vous envoyez et l'utilisation vide char ce

INSERT INTO new values(1, 'Bu', o); 

Vous pouvez changer la propriété du téléphone varchar() ou du moins pour la propriété NOT NULL de sorte que vous pouvez insérer null valeurs.

+0

@georgevich J'ai mal compris votre question. Votre instruction d'insertion échouera car elle recherche une valeur int. Donc, ignorez mon message – Dynamikus

0
INSERT INTO new values(1, 'Bu', NULL); 

ou

INSERT INTO new (`id`, `name`) values(1, 'Bu'); 
+0

Cela ne fonctionnera pas parce que le champ de téléphone est décleared comme 'phone' int (11) NOT NULL donc il ne peut jamais être nul – Dynamikus

+0

Exactement! Vous avez précédemment déclaré "Je veux que cette requête échoue s'il n'y a pas de données pour le champ téléphonique." et oui, ça ne marcherait pas, parce que ça échouerait. – Xedecimal

+0

Hmmm, il y a un malentendu :( – Dynamikus