2017-07-16 12 views
0

がある場合、私はPostgreSQLの1212年9月4日を使用しています更新。私はmyBatisクエリを書いていますが、わかりません。 助けを得ることができますか?ここで値がない場合、挿入値

は、私のクエリコードです:

insert into search_by_date (date,total_count) values (#{date},#{total}); 

パラメータがマップされ、その値がある場合、私はここに私のsearch_by_dateテーブルを

を更新したい。..

column= > no(serial primary key) , date varchar(50),total_count(int) 
+1

の可能性のある重複[PostgreSQLで重複したアップデートの挿入、?](https://stackoverflow.com/questions/1109061/insert-on-duplicate-update-in-postgresql) –

+0

私は知りません。 ..私は新生ですから、すみません.. – jasonbone

答えて

0

Upsert操作で探しているもの。これはPostgreSQL 9.5の機能になります

これを実装するには、同じように機能させることで対応できます。まず、一致する行の数を確認します。 0の場合は、より大きな更新を挿入します。

0

競合の際に更新する必要がある列のグループに一意のインデックスを作成します。

CREATE UNIQUE INDEX uidx_dt_ct ON search_by_date USING BTREE(date,total_count) ; 

挿入時に、インデックスに指定された列にON CONFLICT句を挿入します。

INSERT INTO search_by_date(date,total_count) 
     VALUES('02-05-2017'::DATE , 50) 
     ON CONFLICT(date,total_count) 
    DO UPDATE SET date = EXCLUDED.date, total_count = EXCLUDED.total_count; 
関連する問題