json_populate_record
「この値を生成する」ことを意味するマーカーを返す簡単な方法はありません。
PostgreSQL では、値を生成する必要があることを指定するために挿入することはできません。NULL
あなたが尋ねるなら、NULL
Pgはあなたを意味 NULL
することを期待しており、あなたを二度目に推測したくありません. さらに、NOT NULL
制約のない生成された列を使用しても問題ありません。その場合、列に挿入NULL
してもまったく問題ありません。
PostgreSQL にテーブルのデフォルト値を使用させたい場合、これを行うには 2 つの方法があります。
INSERT
column-listからその行を省略します。また
- 式
DEFAULT
でのみ有効な明示的な書き込みVALUES
ここでは使用できないため、唯一のオプションは、列リストVALUES(DEFAULT, ...)
から列を省略することです。INSERT
regress=# create table test (id serial primary key, name varchar(50));
CREATE TABLE
regress=# insert into test(name) select name from json_populate_record(NULL::test, '{"name": "John"}');
INSERT 0 1
はい、これは、列をリストする必要があることを意味します。実際には、SELECT
リストで 1 回、INSERT
列リストで 1 回、2 回です。
その必要性を回避するために、この PostgreSQL はDEFAULT
レコードの値として指定する方法が必要になるため、定義されていない列の代わりにjson_populate_record
返すことができます。これは、すべての列に対して意図したものではない可能性があり、 が式で使用されていない場合にどのように扱われるかという問題につながる可能性があります。DEFAULT
NULL
DEFAULT
json_populate_record
INSERT
そのjson_populate_record
ため、生成されたキーを持つ行に期待したほど役に立たないかもしれません。