Maison > base de données > tutoriel mysql > le corps du texte

Utiliser des déclencheurs pour arrêter les insertions ou les mises à jour dans MySQL ?

PHPz
Libérer: 2023-08-25 20:49:16
avant
1217 Les gens l'ont consulté

使用触发器来停止 MySQL 中的插入或更新?

Vous devez utiliser la commande SIGNAL SQL STATE pour arrêter les insertions ou les mises à jour dans MySQL. La syntaxe du déclencheur est la suivante :

DELIMITER //
CREATE TRIGGER yourTriggerName BEFORE INSERT ON yourTableName FOR EACH ROW
BEGIN
yourCondition THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'anyMessageToEndUser';
END //
DELIMITER ;
Copier après la connexion

Maintenant, créez un déclencheur pour empêcher l'insertion d'enregistrements dans la table dans certaines circonstances. La requête pour créer le déclencheur est la suivante :

mysql> DELIMITER //
mysql> CREATE TRIGGER InsertPreventTrigger BEFORE INSERT ON Insert_Prevent
   -> FOR EACH ROW
   -> BEGIN
   -> IF(new.Id < 1 or new.Id > 5) THEN
   -> SIGNAL SQLSTATE &#39;45000&#39;
   -> SET MESSAGE_TEXT = &#39;You can not insert record&#39;;
   -> END IF;
   -> END //
Query OK, 0 rows affected (0.20 sec)
mysql> DELIMITER ;
Copier après la connexion

Chaque fois qu'un enregistrement inférieur à 0 ou supérieur à 5 est inséré, le déclencheur ci-dessus cessera de s'insérer.

Maintenant, créons d’abord un tableau. La requête pour créer la table est la suivante :

mysql> create table Insert_Prevent
   -> (
   -> Id int
   -> );
Query OK, 0 rows affected (0.62 sec)
Copier après la connexion

Insérez maintenant les enregistrements inférieurs à 0 ou supérieurs à 5. Cela entraînera un message d'erreur car chaque fois qu'un enregistrement inférieur à 0 ou supérieur à 5 est inséré, un déclencheur est créé pour arrêter l'insertion. Le message d'erreur est le suivant :

mysql> insert into Insert_Prevent values(0);
ERROR 1644 (45000): You cannot insert record
mysql> insert into Insert_Prevent values(6);
ERROR 1644 (45000): You cannot insert record
Copier après la connexion

Si vous insérez des enregistrements entre 1 et 5, aucune erreur ne se produira. Cela n'empêche pas l'insertion d'enregistrements car comme mentionné ci-dessus, nous créons des déclencheurs pour insérer des enregistrements entre 1 et 5. La requête pour insérer des enregistrements est la suivante :

mysql> insert into Insert_Prevent values(1);
Query OK, 1 row affected (0.20 sec)
mysql> insert into Insert_Prevent values(5);
Query OK, 1 row affected (0.17 sec)
mysql> insert into Insert_Prevent values(2);
Query OK, 1 row affected (0.11 sec)
mysql> insert into Insert_Prevent values(3);
Query OK, 1 row affected (0.23 sec)
Copier après la connexion

Utilisez l'instruction select pour afficher tous les enregistrements de la table. La requête est la suivante :

mysql> select *from Insert_Prevent;
Copier après la connexion

Voici le résultat :

+------+
| Id   |
+------+
|    1 |
|    5 |
|    2 |
|    3 |
+------+
4 rows in set (0.00 sec)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!