- A.5.1. MySQL 8.0 のトリガーについてのドキュメントはどこにありますか。
- A.5.2. MySQL のトリガーについてのディスカッションフォーラムはありますか。
- A.5.3. MySQL 8.0 にはステートメントレベルまたは行レベルのトリガーはありますか。
- A.5.4. デフォルトのトリガーはありますか。
- A.5.5. MySQL でトリガーを管理するにはどうすればよいですか。
- A.5.6. 特定のデータベースのすべてのトリガーを表示する方法はありますか。
- A.5.7. トリガーはどこに格納されますか。
- A.5.8. トリガーはストアドプロシージャーを呼び出すことができますか。
- A.5.9. トリガーはテーブルにアクセスできますか。
- A.5.10. 1 つのテーブルに同じトリガーイベントおよびアクション時間のトリガーを複数定義することはできますか。
- A.5.11. トリガーはリモートサーバー上のテーブルを更新できますか。
- A.5.12. トリガーはレプリケーションで動作しますか。
- A.5.13. ソースのトリガーを介して実行されるアクションはレプリカにどのようにレプリケートされますか。
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. |
特定のデータベースのすべてのトリガーを表示する方法はありますか。 |
はい。 データベース
このテーブルについては、セクション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「レプリケーションとトリガー」を参照してください。 |