回答編集履歴
4
訂正
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
DO UPDATE
|
18
18
|
|
19
|
-
SET
|
19
|
+
SET name=excluded.name, age=excluded.age
|
20
20
|
|
21
21
|
```
|
22
22
|
|
3
リンク先修正
test
CHANGED
@@ -22,6 +22,6 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
[conflict_action](https://www.postgresql.jp/document/
|
25
|
+
[conflict_action](https://www.postgresql.jp/document/9.6/html/sql-insert.html)
|
26
26
|
|
27
27
|
> conflict_actionではON CONFLICTの代替の動作を指定します。 これはDO NOTHINGあるいはDO UPDATE句のいずれかをとることができ、後者では競合が発生した場合に実行されるUPDATEの動作の正確な詳細を記述します。 ON CONFLICT DO UPDATEのSET句とWHEREは既存の行にテーブルの名前(または別名)を使ってアクセスでき、また**挿入されようとしていた行には、特別なexcludedテーブルを使ってアクセスできます。** excludedの列を読み取るときには、対象テーブルの対応する列のSELECT権限が必要です。
|
2
追記
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
エラー自体はSET構文中にFROMを使用しているからです。
|
2
2
|
|
3
3
|
以下の様にexcludedで参照するように記述します。
|
4
|
+
|
5
|
+
|
4
6
|
|
5
7
|
```SQL
|
6
8
|
|
@@ -17,3 +19,9 @@
|
|
17
19
|
SET id=excluded.id, name=excluded.name, age=excluded.age
|
18
20
|
|
19
21
|
```
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
[conflict_action](https://www.postgresql.jp/document/10/html/sql-insert.html)
|
26
|
+
|
27
|
+
> conflict_actionではON CONFLICTの代替の動作を指定します。 これはDO NOTHINGあるいはDO UPDATE句のいずれかをとることができ、後者では競合が発生した場合に実行されるUPDATEの動作の正確な詳細を記述します。 ON CONFLICT DO UPDATEのSET句とWHEREは既存の行にテーブルの名前(または別名)を使ってアクセスでき、また**挿入されようとしていた行には、特別なexcludedテーブルを使ってアクセスできます。** excludedの列を読み取るときには、対象テーブルの対応する列のSELECT権限が必要です。
|
1
修正
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
エラー自体はSET構文中にFROMを使用しているからです。
|
2
2
|
|
3
|
-
以下の様に
|
3
|
+
以下の様にexcludedで参照するように記述します。
|
4
4
|
|
5
5
|
```SQL
|
6
6
|
|
@@ -14,6 +14,6 @@
|
|
14
14
|
|
15
15
|
DO UPDATE
|
16
16
|
|
17
|
-
SET id=
|
17
|
+
SET id=excluded.id, name=excluded.name, age=excluded.age
|
18
18
|
|
19
19
|
```
|