您可以检查EF生成的整个数据库模式
pg_dump -s
,或询问
psql
用以下方式描述单个对象
\d
meta-command
.
demo at db<>fiddle
testdb=# create table test( id int primary key generated by default as identity
, id2 serial);
CREATE TABLE
testdb=# \d test
Table "public.test"
Column | Type | Collation | Nullable | Default
id | integer | | not null | generated always as identity
id2 | integer | | not null | nextval('test_id2_seq'::regclass)
Indexes:
"test_pkey" PRIMARY KEY, btree (id)
我提到这两个工具是因为它们都与标准的PostgreSQL构建捆绑在一起,但其他工具像
pgAdmin
,
DBeaver
或
DataGrip
,都提供类似的功能。
如果你只需要使用默认值而不查找它,
insert..values
接受a
default
关键字代替值:
insert into test(id)values(default)returning *;
或者跳过该列:在上面的示例中,我只针对
id
,所以
id2
单独使用默认值。请注意,我必须在第一个括号中的目标列表和第二个括号的值列表中跳过它。
你也可以用
pg_get_serial_sequence()
只要它是一个
serial
或
generated [always|by default] as identity
列,或者序列通过以下方式连接到它
[create|alter] sequence..owned by
:
insert into test(id,id2)
values( nextval(pg_get_serial_sequence('test','id'))
, nextval(pg_get_serial_sequence('test','id2')))
returning *;