postgresql 如何不给列名不给标识列插入

deikduxw  于 2022-12-26  发布在  PostgreSQL
关注(0)|答案(1)|浏览(151)

表格定义:

CREATE TABLE IF NOT EXISTS public.test
(
    "Id" integer NOT NULL GENERATED ALWAYS AS IDENTITY (INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1),
    "SomeColumn" character(100) COLLATE pg_catalog."default",
    CONSTRAINT test_pkey PRIMARY KEY ("Id")
)

TABLESPACE pg_default;

ALTER TABLE IF EXISTS public.test
    OWNER to postgres;

我正在尝试这个查询:

INSERT INTO public.test VALUES ('testData');

但是PostgreSQL会抛出这个错误:
错误:类型integer的输入语法无效:“测试数据”
第1行:插入公共。测试值(“testData”);
我知道这在SQL Server中是有效的。有没有办法在PostgreSQL中实现这种行为?
我不想指定列名。列是按顺序定义的,但查询中不存在标识列。

deyfvvtc

deyfvvtc1#

我不想给予列名
这是个坏主意。你应该总是为INSERT语句指定目标列。特别是当你想跳过一些列,而不是其他列的时候。
但是,如果您坚持使用糟糕的编码风格,可以使用DEFAULT关键字

INSERT INTO public.test VALUES (DEFAULT, 'testData');

相关问题