Maison  >  Article  >  base de données  >  DELIMITER // Quel rôle joue-t-il dans les triggers MySQL ?

DELIMITER // Quel rôle joue-t-il dans les triggers MySQL ?

WBOY
WBOYavant
2023-08-26 10:41:072259parcourir

DELIMITER // 在 MySQL 的触发器中起什么作用?

DELIMITER // peut être utilisé pour changer le point-virgule (;) d'une instruction en //. Vous pouvez désormais écrire plusieurs instructions en utilisant des points-virgules dans les déclencheurs.

Ceci est une démo du déclencheur. Dans cet exemple, chaque fois que vous entrez un EmployeeSalary inférieur à 1 000, il sera par défaut 10 000.

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

mysql> create table EmployeeTable
-> (
-> EmployeeId int,
-> EmployeeName varchar(100),
-> EmployeeSalary float
-> );
Query OK, 0 rows affected (0.76 sec)

Après avoir créé la table, vous devez créer un déclencheur sur la commande d'insertion. La requête pour créer le déclencheur est la suivante.

mysql> delimiter //
mysql> create trigger CheckSalary before insert on EmployeeTable
-> for each row if new.EmployeeSalary < 1000 then set
-> new.EmployeeSalary=10000;
-> end if;
-> //
Query OK, 0 rows affected (0.40 sec)
mysql> delimiter ;

Vous pouvez maintenant utiliser la commande insert pour vérifier les déclencheurs. Si le EmployeeSalary inséré est inférieur à 1000, aucune erreur n'apparaîtra mais il stockera une valeur par défaut, que j'ai donnée est 10000.

La requête pour insérer des enregistrements est la suivante -

mysql> insert into EmployeeTable values(1,&#39;Carol&#39;,500);
Query OK, 1 row affected (0.25 sec)

Utilisez maintenant l'instruction select pour vérifier tous les enregistrements de la table. La requête est la suivante.

mysql> select *from EmployeeTable;

Ce qui suit est le résultat.

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 1          | Carol        | 10000          |
+------------+--------------+----------------+
1 row in set (0.00 sec)

Si vous entrez 1000 ou plus, seul votre numéro sera affiché. J'ai supprimé les enregistrements précédents de la table à l'aide de la commande truncate.

mysql> truncate table EmployeeTable;
Query OK, 0 rows affected (1.44 sec)

Requête pour insérer des enregistrements dans la table.

mysql> insert into EmployeeTable values(2,&#39;Bob&#39;,1000);
Query OK, 1 row affected (0.14 sec)

mysql> insert into EmployeeTable values(3,&#39;Carol&#39;,2500);
Query OK, 1 row affected (0.19 sec)

Il s'agit d'une requête qui utilise l'instruction select pour vérifier tous les enregistrements de la table.

mysql> select *from EmployeeTable;

Ce qui suit est le résultat.

+------------+--------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary |
+------------+--------------+----------------+
| 2          | Bob          | 1000           |
| 3          | Carol        | 2500           |
+------------+--------------+----------------+
2 rows in set (0.00 sec)

Regardez l'exemple de résultat ci-dessus, EmployeeSalary est supérieur ou égal à 1 000. Cela vous donnera votre salaire. N'oubliez pas que s'il est inférieur à 1 000, la valeur par défaut est définie sur 10 000.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer