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

Postgres 9.1でテーブルのOIDを決定しますか?

    テーブルOIDを取得するには、オブジェクト識別子タイプregclassにキャストします (同じDBに接続している間):

    SELECT 'mytbl'::regclass::oid;
    

    これにより、search_pathに沿って指定された名前の最初のテーブル(またはビューなど)が検索されます。 または、見つからない場合は例外を発生させます。

    テーブル名をスキーマ修飾して、検索パスへの依存関係を削除します。

    SELECT 'myschema.mytbl'::regclass::oid;
    

    Postgresでは9.4 またはそれ以降、to_regclass('myschema.mytbl')を使用することもできます 、テーブルが見つからない場合でも例外は発生しません:

    • 特定のスキーマにテーブルが存在するかどうかを確認する方法

    次に、カタログテーブルpg_attributeをクエリするだけです。 列の存在について:

    SELECT TRUE AS col_exists
    FROM   pg_attribute 
    WHERE  attrelid = 'myschema.mytbl'::regclass
    AND    attname  = 'mycol'
    AND    NOT attisdropped  -- no dropped (dead) columns
    -- AND attnum > 0        -- no system columns (you may or may not want this)
    


    1. Where句の不明な列

    2. PL/SQLでform-dataとパラメータを使用してPOSTリクエストを送信する方法

    3. sqliteが返されました:エラーコード=1、msg =そのような列はありません:kitchen1

    4. エラーは何ですかすべての派生テーブルはMySQLで独自のエイリアスを持っている必要がありますか?