MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLトリガーで「FOREACHROW」はどのように機能しますか?


実際には、「FOR EACH ROW」とは、一致した各行が更新または削除されることを意味します。つまり、トリガーは各行に適用されておらず、影響を受ける各テーブル行のトリガー本体を実行することを示しているだけです。これは、次の例で説明できます-

この例では、次のように、SampleとSample_rowaffectedの2つのテーブルを作成しています-

mysql> Create table Sample(id int, value varchar(20));
Query OK, 0 rows affected (0.47 sec)

mysql> Insert into Sample(id, value) values(100, 'same'),(101,
'Different'),(500, 'excellent'),(501, 'temporary');
Query OK, 4 rows affected (0.04 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> Select * from Sample;
+------+-----------+
| id   | value     |
+------+-----------+
| 100  | same      |
| 101  | Different |
| 500  | excellent |
| 501  | temporary |
+------+-----------+
4 rows in set (0.00 sec)

mysql> Create table Sample_rowaffected(id int);
Query OK, 0 rows affected (0.53 sec)

mysql> Select Count(*) as ‘Rows Affected’ from sample_rowaffected;
+---------------+
| Rows Affected |
+---------------+
|             0 |
+---------------+
1 row in set (0.10 sec)

次に、テーブル「サンプル」の値を削除する前にトリガーするトリガーを次のように作成します-

mysql> Delimiter //
mysql> Create trigger trigger_before_delete_sample BEFORE DELETE on
Sample
    -> FOR EACH ROW
    -> BEGIN
    -> SET @count = if (@count IS NULL, 1, (@count+1));
    -> INSERT INTO sample_rowaffected values (@count);
    -> END ;
    -> //
Query OK, 0 rows affected (0.15 sec)
mysql> Delimiter ;

これで、次のクエリはテーブル「Sample」からいくつかの値を削除し、削除された行の数のカウントが@countユーザー変数に格納されます-

mysql> Delete from Sample WHERE ID >=500;
Query OK, 2 rows affected (0.11 sec)

mysql> Select @count;
+--------+
| @count |
+--------+
|      2 |
+--------+
1 row in set (0.03 sec)

次のクエリを使用すると、次のようにsample_rowaffectedテーブルに挿入された削除の影響を受ける行の値を確認できます-

mysql> Select Count(*) as 'Rows Affected' from sample_rowaffected;
+---------------+
| Rows Affected |
+---------------+
|             2 |
+---------------+
1 row in set (0.00 sec)

mysql> Select * from Sample;
+------+-----------+
| id   | value     |
+------+-----------+
| 100  | same      |
| 101  | Different |
+------+-----------+
2 rows in set (0.00 sec)

上記の例を使用すると、「FOR EACH ROW」は、更新または削除される一致した各行を意味することは明らかです。


  1. それは何ですか、それは何のためにあり、VoWiFi通話サービスはどのように機能しますか?

    電話での良好な信号が最適な通話を保証することを私たちは知っています。ただし、カバレッジが低い場所にいる場合は、VoWiFiなどのサービスが必要です。 したがって、自問する価値があります。VoWiFi通話サービスとは何ですか、それは何のためにあり、どのように機能しますか? 次に紹介するのは、インターネットネットワークを介して携帯電話で電話をかける方法ですが、Skypeを使用して携帯電話で電話をかけるなど、他にも知っておくべきオプションがあります。 それは何ですか、それは何のためにあり、VoWiFi通話サービスはどのように機能しますか? ユーザーとその携帯電話のインタラクティブな体験は、電話交

  2. インターネットはどのように機能しますか?

    インターネットは私たちの日常生活の大きな部分を占めており、常に使用しています。しかし、実際にはどのように機能するのでしょうか? freeCodeCamp.org の YouTube チャンネルでコースを公開しました。このコースでは、基本的なネットワーキングの原則とともにインターネットがどのように機能するかを説明します。 Ian Frost がこのコースを教えています。彼は経験豊富な教師であり、複雑なトピックを簡単に説明する図を作成することに長けています。 このコースではすべてを一から教えてくれるので、予備知識は必要ありません。 インターネットは、実際には見かけ以上のものです。このコー