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

EXECUTEFORMATの使用方法...postgres関数での使用

    Postgres 9.0以降では、関数は次のようになります。

    CREATE OR REPLACE FUNCTION dummytest_insert_trigger()
      RETURNS trigger AS
    $func$
    DECLARE
       v_partition_name text := quote_ident('dummyTest');  -- assign at declaration
    BEGIN
       IF NEW.datetime IS NOT NULL THEN
          EXECUTE 
          'INSERT INTO ' || v_partition_name || ' VALUES ($1,$2)'
          USING NEW.id, NEW.datetime;              
       END IF;                    
    
       RETURN NULL;  -- You sure about this?
    END
    $func$  LANGUAGE plpgsql;
    

    RETURN NULLについて :

    • PostgreSQLのトリガー前の結果を無視するには?

    大文字と小文字が混在する識別子は使用しないことをお勧めします。 format( .. %I ..)を使用 またはquote_ident()"dummyTest"という名前のテーブルを取得します 、残りの部分については二重引用符で囲む必要があります。関連:

    • PostgreSQLの列名では大文字と小文字が区別されますか?

    代わりに小文字を使用してください:

    quote_ident('dummytest')
    

    EXECUTEで動的SQLを使用しても意味がありません 静的なテーブル名がある限り。しかし、それはおそらく単純化された例にすぎませんか?



    1. 準備されたPDOステートメントを使用してORDERBYパラメーターを設定するにはどうすればよいですか?

    2. SQL Serverのテーブル名がdboで始まるのはなぜですか?

    3. Oracleのデフォルトの日付形式はYYYY-MM-DDですが、なぜですか?

    4. Oracleの一意性制約と一意性インデックス