sql >> データベース >  >> RDS >> PostgreSQL

postgreSQL9.3の動的テーブル名

    これを行わないでください。最初に、から始めて、代替案をよく検討してください。パーティショニングと制約の除外

    動的テーブル名を使用する必要がある場合は、クエリ生成中にアプリケーションレベルで使用してください。

    他のすべてが失敗した場合は、次のようなPL/PgSQLプロシージャを使用できます。

    CREATE OR REPLACE pleasedont(int year) RETURNS TABLE basetable AS $$
    BEGIN
        RETURN QUERY EXECUTE format('SELECT col1, col2, col3 FROM %I', 'basetable_'||year);
    END;
    $$ LANGUAGE plpgsql;
    

    これは、サブテーブルと同じ構造のベーステーブルがある場合にのみ機能します。また、修飾子(句の制約など)を追加し始めるときに作業するのは非常に面倒であり、あらゆる種類のプランのキャッシュや効果的なプリペアドステートメントの使用を妨げます。




    1. PDO bindParamは、ステートメントが結果を返すことを許可していません

    2. MySql、PHP、およびADODBを使用したプリペアドステートメントのパラメーター化されたIN句

    3. バックグラウンドプロセス

    4. エラー:クラスCI_DB_mysql_resultのオブジェクトを文字列に変換できませんでした