2

たとえば、配送サイトのプロモーション コードを格納するテーブルを作成しているとします。テーブルをプロモーション コードとコードのバリデーターに一致させたい。

PROMO1: Order must have 3 items
PROMO2: Order subtotal must be greater than $50

クエリやルーチンをテーブルの列に保存し、その内容を使用して検証できるようにしたいと考えています。

SELECT * FROM Orders 
WHERE Promo.ID = 2 AND Promo.Validation = True

またはその趣旨の何か。何か案は?

4

2 に答える 2

2

クエリをデータベースに保存しません。はるかに良い可能性があります。

どちらがニーズに最も適しているかを判断する必要があります (あなたの質問に基づいて、私には明確ではありません)。使用できます

ビュー

また

準備されたステートメント

また

ストアド プロシージャ

于 2012-06-30T22:10:22.620 に答える
1

おそらく問題を解決するためのより良い方法がありますが、あなたの質問に対する答えは、必要な結果を返すストアド プロシージャを作成することです。私が働いている場所 (そして私はこの設計が嫌いです) では、実際には、アプリケーションで使用されるすべてのクエリと dml がストアド プロシージャに格納されます。

動的 sql を使用してクエリを動的に構築することもできます。MySql については、以下の記事が参考になるかもしれません。

MySQL ストアド プロシージャで動的 SQL を使用する方法

それ以外の場合は、クエリをデータベースに文字列形式で保存し、その投稿が指摘するように、EXECUTE ステートメントを使用してクエリを取得して実行することもできます。

私は個人的にはそのようなデザインを避けたいと思います。クエリを XML に保存することは悪い選択肢ではなく、XML から拡張および構成できるようにアプリを作成する必要があるため、新しい検証ロジックを追加するためにコードを変更する必要はなく、代わりに XML で構成するだけで済みます。 .

于 2012-06-30T23:23:58.343 に答える