MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
A.5.1. | MySQL 8.0 のトリガーについてのドキュメントはどこにありますか。 |
セクション25.3「トリガーの使用」を参照してください。 | |
A.5.2. | MySQL のトリガーについてのディスカッションフォーラムはありますか。 |
はい。 https://forums.mysql.com/list.php?99 にあります。 | |
A.5.3. | MySQL 8.0 にはステートメントレベルまたは行レベルのトリガーはありますか。 |
MySQL 8.0 では、すべてのトリガーは
| |
A.5.4. | デフォルトのトリガーはありますか。 |
明示的にはありません。 MySQL は、一部の
| |
A.5.5. | MySQL でトリガーを管理するにはどうすればよいですか。 |
MySQL 8.0
では、トリガーを作成する場合は
トリガーに関する情報は、 | |
A.5.6. | 特定のデータベースのすべてのトリガーを表示する方法はありますか。 |
はい。 データベース SELECT TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE, ACTION_STATEMENT
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA=' このテーブルについては、セクション26.45「INFORMATION_SCHEMA TRIGGERS テーブル」を参照してください。
MySQL に固有の | |
A.5.7. | トリガーはどこに格納されますか。 |
トリガーは、データディクショナリの一部である
| |
A.5.8. | トリガーはストアドプロシージャーを呼び出すことができますか。 |
はい。 | |
A.5.9. | トリガーはテーブルにアクセスできますか。 |
トリガーは、それ自体が定義されているテーブルの古いデータおよび新しいデータの両方にアクセスできます。 トリガーはほかのテーブルに影響を与えることもできますが、その関数またはトリガーを呼び出したステートメントによってすでに使用されている (読み取りまたは書き込みのために) テーブルを変更することはできません。 | |
A.5.10. | 1 つのテーブルに同じトリガーイベントおよびアクション時間のトリガーを複数定義することはできますか。 |
MySQL 8.0
では、同じトリガーイベントおよびアクション時間を持つ特定のテーブルに対して複数のトリガーを定義できます。
たとえば、1 つのテーブルに対して 2 つの
| |
A.5.11. | トリガーはリモートサーバー上のテーブルを更新できますか。 |
はい。
リモートサーバー上のテーブルは、 | |
A.5.12. | トリガーはレプリケーションで動作しますか。 |
はい。 ただし、それらがどのように機能するかは、MySQL 「「クラシック」」ステートメントベースと行ベースのどちらのレプリケーション形式を使用しているかによって異なります。 ステートメントベースレプリケーションを使用する場合、レプリカ上のトリガーは、ソース上で実行される (およびレプリカにレプリケートされる) ステートメントによって実行されます。 行ベースのレプリケーションを使用している場合、ソースで実行されてレプリカにレプリケートされたステートメントのため、トリガーはレプリカで実行されません。 かわりに、行ベースのレプリケーションを使用すると、ソースでトリガーを実行したことによって発生した変更がレプリカに適用されます。 詳細は、セクション17.5.1.36「レプリケーションとトリガー」を参照してください。 | |
A.5.13. | ソースのトリガーを介して実行されるアクションはレプリカにどのようにレプリケートされますか。 |
これは、ステートメントベースのレプリケーションまたは行ベースのレプリケーションのいずれを使用しているかによって異なります。 ステートメントベースのレプリケーション.
まず、ソースに存在するトリガーをレプリカサーバーに再作成する必要があります。
これが行われると、レプリケーションに関与するほかの標準の
DML
ステートメントと同様に、レプリケーションフローが動作します。
たとえば、レプリケーションソースサーバーに存在する
行ベースのレプリケーション. 行ベースのレプリケーションを使用すると、ソースでトリガーを実行したことによって発生した変更がレプリカに適用されます。 ただし、トリガー自体は、実際には行ベースレプリケーションの下のレプリカでは実行されません。 これは、ソースとレプリカの両方がソースからの変更を適用し、さらにこれらの変更の原因となったトリガーがレプリカに適用された場合、変更がレプリカに 2 回適用され、ソースとレプリカのデータが異なるためです。 ほとんどの場合、行ベースのレプリケーションおよびステートメントベースのレプリケーションで結果は同じです。 ただし、ソースとレプリカで異なるトリガーを使用する場合は、行ベースのレプリケーションを使用できません。 (これは、行ベースの形式では、トリガーが実行される原因となったステートメントではなく、ソースで実行されているトリガーによって行われた変更がレプリカにレプリケートされ、レプリカ上の対応するトリガーが実行されないためです。) 代わりに、そのようなトリガーが実行されるきっかけとなったステートメントを、ステートメントベースのレプリケーションを使用してレプリケートする必要があります。 詳細は、セクション17.5.1.36「レプリケーションとトリガー」を参照してください。 |