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

PostgreSQL:ASが存在しない場合はテーブルを作成します

    CREATE TABLE ASは、通常のCREATE TABLEとは別のステートメントと見なされ、Postgresバージョン9.5まで (変更ログエントリを参照)IF NOT EXISTSをサポートしていませんでした 句。 (使用しているバージョンのマニュアルの正しいバージョンを必ず確認してください。)

    それほど柔軟ではありませんが、CREATE TABLE ... LIKE 状況によっては、構文が代替になる場合があります。 SELECTからその構造(およびコンテンツ)を取得するのではなく ステートメント、それは別のテーブルまたはビューの構造をコピーします。

    したがって、このようなものを書くことができます(テストされていません)。最後の挿入は、テーブルにすでにデータが入力されている場合、何もしないというかなり厄介な方法です。

    CREATE OR REPLACE VIEW source_data AS SELECT * FROM foo NATURAL JOIN bar;
    
    CREATE TABLE IF NOT EXISTS snapshot LIKE source_data;
    
    INSERT INTO snapshot
    SELECT * FROM source_data
    WHERE NOT EXISTS ( SELECT * FROM snapshot );
    

    または、以前のデータ(たとえば、放棄された一時テーブル)を破棄する場合は、古いテーブルを条件付きで削除し、新しいテーブルを無条件に作成できます。

    DROP TABLE IF EXISTS temp_stuff;
    
    CREATE TEMPORARY TABLE temp_stuff AS SELECT * FROM foo NATURAL JOIN bar;
    


    1. ログインで要求されたデータベーステストを開くことができません。ログインに失敗しました。ユーザー'xyz\ASPNET'のログインに失敗しました

    2. Oracle Database BLOBからJavaのInputStreamへ?

    3. WM_CONCAT関数に相当するSQLServer

    4. Pythondatetime.datetimeオブジェクトをMySQLに挿入する