3

そこで、PHP + MySQL で 4 つの関連テーブルを持つシステムを開発しています。1 つのテーブルでの挿入、更新、および削除の任意の形式は、通常、少なくとも 2 つのテーブルに反映されます。

私の質問は、必要な関連する変更を処理するために、トリガーまたは追加の php スクリプト (SQL クエリをトリガーする) を使用する方が効率的であるということです。

トリガーは私には理想的ですが、私がそれらを書くと、読みやすさの観点からかなり複雑で面倒になります。PHP では、より「正気」な方法で物事を行うことができます。

性能だけでなく使い勝手や今後の改造なども踏まえてご提案ください。

4

4 に答える 4

4

データベース自体を管理するように構築することを強くお勧めします。

これをデカップリングと呼びます。

その後、あなた(または他の誰か)のスクリプトに間違いがあっても、データは保護されています。ほとんどの (すべての?) ビジネスにとって、最も重要な資産です。

また、他のメカニズムを使用してデータベースを利用することもできます。生のコマンドラインでさえ。

コードを読みやすくするには、フォーマットしてコメントを使用します。

于 2012-09-07T10:18:42.227 に答える
3
  • DBA がコードを制御できるようにする場合にトリガーされます。
  • プログラマーがコードを制御できるようにしたい場合は、PHP。

明確にするために:

それがトリガーである場合、それは物事がそのように機能するためのデータベース設計の一部であることを意味します. つまり、データベースの構造は、そのように動作するかどうかに依存します。

PHP コードの場合、アクションはビジネス ロジックの一部であり、DB のコア構造にとって重要ではないことを意味します。

于 2012-09-07T10:18:08.483 に答える
1

実際のところ、データベース トリガーは PHP コードよりも高速です。他のテーブルを更新する前に、ソース テーブルのデータをどれだけ "変換" する必要があるかによって異なります。SQL を操作しなければならないほど、SQL の可読性と保守性が低下する可能性があります。ビジネスロジックも含まれている可能性があるため。

したがって、パフォーマンスの問題がない場合は、PHP 内に保持することをお勧めします。

于 2012-09-07T10:19:10.160 に答える
-1

以下の構文を使用してMYSQLにトリガーを追加できます...

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    [trigger_order]
    trigger_body

trigger_time: { BEFORE | AFTER }

trigger_event: { INSERT | UPDATE | DELETE }

trigger_order: { FOLLOWS | PRECEDES } other_trigger_name
于 2016-06-21T06:24:30.570 に答える