1
SELECTステートメントのWHERE句内の単語をルール(CREATE RULE myrule AS ON SELECT TO mytable
...)で置き換えることはできますか?WHERE句で単語を置換するPostgresルール
SELECT col1, col2
FROM mytable
WHERE col2 = 1;
は
SELECT col1, col2
FROM mytable
WHERE col3 = 1;
初期文が置換を許可していないクライアントによって発行さになるはずです。したがって、データベース側で代入を行う必要があります。
**編集**
私は十分に特定されていない可能性があります。 この種のselect文のパターンには、列名の置換が必要です。 WHERE句は常に変化します。 ルール自体の現在のSELECTステートメントを参照することは可能ですか?
これは私が必要なものである最低限に分解:
- は、現在のSELECTステートメントを取る「WHERE COL2」と「WHERE col3という」 物事のデータベース側で展開することができるルールに詰め
3つのパラメータ(リテラルではなく)をすべて渡してから処理することで、空のパラメータを取得したときにtrueになるようにすることができます。たとえば、where(col1 =?または?はnull)、(col2 =?または?はnull) ' – Hambone
いいえ、不可能です。ルールを設定できる場合、クエリは 'col1、col2'の代わりに' col1、col3'を返します。 – klin
WHERE句のテーブル名のみが置き換えられることを確認するために、私の例の置換がWHEREを含む理由 – andehhh