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

INSERT...を使用します。競合時に失敗した行を返さないでください。

    少し冗長ですが、他に何も考えられません:

    with all_tags (name) as (
      values ('tag10'), ('tag6'), ('tag11')
    ), inserted (id, name) as (
       INSERT INTO tags (name)
       select name 
       from all_tags
       ON CONFLICT DO NOTHING 
       returning id, name
    )
    select t.id, t.name, 'already there'
    from tags t
      join all_tags at on at.name = t.name
    union all
    select id, name, 'inserted'
    from inserted;
    

    tagsからの外側の選択 以前のテーブルのスナップショットが表示されます 新しいタグが挿入されました。定数の3番目の列は、クエリをテストするためだけにあり、挿入された行と挿入されていない行を識別できます。



    1. MariaDB FLOOR()とTRUNCATE()

    2. 大きな(または少なくとも重要な)BLOBをJDBCを使用してOracleに配置するにはどうすればよいですか?

    3. 番号が1桁の場合、番号の前にスペースを追加するにはどうすればよいですか?

    4. Gettextまたはデータベースの翻訳