Utiliser un déclencheur pour arrêter une insertion ou de mise à jour
Depuis MySQL ignore la vérification des contraintes, comment fait-on pour utiliser un déclencheur pour arrêter une insertion ou une mise à jour à partir qui se passe?
Par exemple:
Table foo est un attribut appelé l'agence, et l'agence de l'attribut ne peut être 1, 2, 3, 4, ou 5.
delimiter $$
create trigger agency_check
before insert on foo
for each row
begin
if (new.agency < 1 or new.agency > 5) then
#Do nothing?
end if;
end
$$
delimiter ;
Ou est-il une meilleure façon de faire la vérification des contraintes dans MySQL?
Pourquoi ne pouvez-vous pas utiliser
enum
type de données de l'agence de la colonne ?OriginalL'auteur Ryan | 2012-04-16
Vous devez vous connecter pour publier un commentaire.
Essayer le SIGNAL de la syntaxe https://dev.mysql.com/doc/refman/5.5/en/signal.html
SIGNAL
. Il devrait êtreSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your error message';
OriginalL'auteur Naveen Kumar
Si votre version de MySQL est âgé de plus de 5.5, essayez de définir une valeur non nulle du champ de la table à NULL. Il s'agit d'un hack, mais il empêche la mise à jour ou l'insérer à partir de la fin.
Le SIGNAL de commande qui Lui suggère ressemble beaucoup, et je suis impatient de l'utiliser après nous mettre à niveau.
OriginalL'auteur bradoaks