- A.5.1. MySQL 5.6 のトリガーについてのドキュメントはどこにありますか。
- A.5.2. MySQL のトリガーについてのディスカッションフォーラムはありますか。
- A.5.3. MySQL 5.6 にはステートメントレベルまたは行レベルのトリガーはありますか。
- 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. トリガーでは UDF を使用して外部アプリケーションを呼び出すことができますか。
- A.5.12. トリガーはリモートサーバー上のテーブルを更新できますか。
- A.5.13. トリガーはレプリケーションで動作しますか。
- A.5.14. マスターでトリガーによって実行されたアクションはどのようにスレーブにレプリケートされますか。
A.5.1. |
MySQL 5.6 のトリガーについてのドキュメントはどこにありますか。 |
セクション20.3「トリガーの使用」を参照してください。 |
|
A.5.2. |
MySQL のトリガーについてのディスカッションフォーラムはありますか。 |
はい。https://forums.mysql.com/list.php?99 にあります。 |
|
A.5.3. |
MySQL 5.6 にはステートメントレベルまたは行レベルのトリガーはありますか。 |
MySQL 5.6 では、すべてのトリガーは
|
|
A.5.4. |
デフォルトのトリガーはありますか。 |
明示的にはありません。MySQL は、一部の
|
|
A.5.5. |
MySQL でトリガーを管理するにはどうすればよいですか。 |
MySQL 5.6
では、トリガーを作成する場合は
トリガーに関する情報は、 |
|
A.5.6. |
特定のデータベースのすべてのトリガーを表示する方法はありますか。 |
はい。データベース
このテーブルについては、セクション21.26「INFORMATION_SCHEMA TRIGGERS テーブル」を参照してください。
MySQL に固有の |
|
A.5.7. |
トリガーはどこに格納されますか。 |
テーブルのトリガーは、現在、 |
|
A.5.8. |
トリガーはストアドプロシージャーを呼び出すことができますか。 |
はい。 |
|
A.5.9. |
トリガーはテーブルにアクセスできますか。 |
トリガーは、それ自体が定義されているテーブルの古いデータおよび新しいデータの両方にアクセスできます。トリガーはほかのテーブルに影響を与えることもできますが、その関数またはトリガーを呼び出したステートメントによってすでに使用されている (読み取りまたは書き込みのために) テーブルを変更することはできません。 |
|
A.5.10. |
1 つのテーブルに同じトリガーイベントおよびアクション時間のトリガーを複数定義することはできますか。 |
MySQL 5.6
では、同じトリガーイベントおよびアクション時間を持つ複数のトリガーを特定のテーブルに定義することはできません。たとえば、1
つのテーブルに対して 2 つの |
|
A.5.11. |
トリガーでは UDF を使用して外部アプリケーションを呼び出すことができますか。 |
はい。たとえば、トリガーは
|
|
A.5.12. |
トリガーはリモートサーバー上のテーブルを更新できますか。 |
はい。リモートサーバー上のテーブルは、 |
|
A.5.13. |
トリガーはレプリケーションで動作しますか。 |
はい。ただし、それらが動作する仕組みは、MySQL のすべてのバージョンで使用できる「標準」のステートメントベースのレプリケーション、または MySQL 5.1 で導入された行ベースのレプリケーション形式のいずれを使用しているかによって異なります。 ステートメントベースのレプリケーションを使用している場合、スレーブのトリガーは、マスターで実行されてスレーブにレプリケートされたステートメントによって実行されます。 行ベースのレプリケーションを使用している場合、スレーブのトリガーは、マスターで実行されてスレーブにレプリケートされたステートメントによって実行されません。代わりに、行ベースのレプリケーションを使用した場合は、マスターでトリガーが実行されたことによる変更がスレーブに適用されます。 詳細は、セクション17.4.1.32「レプリケーションとトリガー」を参照してください。 |
|
A.5.14. |
マスターでトリガーによって実行されたアクションはどのようにスレーブにレプリケートされますか。 |
これは、ステートメントベースのレプリケーションまたは行ベースのレプリケーションのいずれを使用しているかによって異なります。 ステートメントベースのレプリケーション
まず、マスターに存在するトリガーをスレーブサーバーに再作成する必要があります。これが行われると、レプリケーションに関与するほかの標準の
DML
ステートメントと同様に、レプリケーションフローが動作します。たとえば、マスター
MySQL サーバーに存在する、
行ベースのレプリケーション 行ベースのレプリケーションを使用している場合は、マスターでトリガーが実行されたことによる変更がスレーブに適用されます。ただし、行ベースのレプリケーションでは、トリガー自体は実際にはスレーブで実行されません。これは、マスターとスレーブの両方にマスターの変更が適用され、さらにそれらの変更を行なったトリガーがスレーブで実行された場合、その変更は実際には 2 回スレーブに適用され、マスターとスレーブのデータが異なるデータとなってしまうためです。 ほとんどの場合、行ベースのレプリケーションおよびステートメントベースのレプリケーションで結果は同じです。ただし、マスターとスレーブで異なるトリガーを使用している場合、行ベースのレプリケーションは使用できません。(これは、行ベース形式は、トリガーが実行されるきっかけとなったステートメントではなく、マスターで実行されたトリガーによる変更をスレーブにレプリケートし、スレーブの対応するトリガーは実行されないためです。)代わりに、そのようなトリガーが実行されるきっかけとなったステートメントを、ステートメントベースのレプリケーションを使用してレプリケートする必要があります。 詳細は、セクション17.4.1.32「レプリケーションとトリガー」を参照してください。 |