PostgreSQL ERROR 列不存在是指一个列值

nad*_*nad 0 sql string postgresql sql-update sql-insert

projects在 postgreSQL 中有一个表,如下所示

id.    project_name.   col3.  col4
1111.   test.          ...    ...
Run Code Online (Sandbox Code Playgroud)

id仅当id不存在时,我才想为新插入一个新行。所以我写了下面的查询

INSERT INTO projects(id, project_name)
VALUES("1234", "Test_Project")
ON CONFLICT (id)
DO NOTHING
Run Code Online (Sandbox Code Playgroud)

但它给我一个错误

Query 1 ERROR: ERROR:  column "1234" does not exist
LINE 2: VALUES("1234", "Test_Project_...
Run Code Online (Sandbox Code Playgroud)

请建议。

** 编辑**

id表中的列是一个 uuid 并且不是唯一的。可以有多个具有相同 ID 的行。根据 GMB 的建议,我尝试了以下

INSERT INTO projects(id, project_name)
    VALUES('1234', 'Test_Project')
    ON CONFLICT (create unique index on projects(id))
    DO NOTHING
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

Query 1 ERROR: ERROR:  syntax error at or near "create"
LINE 3: ON CONFLICT (create unique index on projects(id...
Run Code Online (Sandbox Code Playgroud)

我是新手,所以我肯定会遗漏一些明显的东西。

GMB*_*GMB 5

对文字字符串使用单引号。双引号代表标识符(例如列名或表名) - 因此你得到的错误:

INSERT INTO projects(id, project_name)
VALUES('1234', 'Test_Project')
ON CONFLICT (id)
DO NOTHING
Run Code Online (Sandbox Code Playgroud)

也就是说,我怀疑那idinteger数据类型。如果是这样,请不要引用它:

INSERT INTO projects(id, project_name)
VALUES(1234, 'Test_Project')
ON CONFLICT (id)
DO NOTHING
Run Code Online (Sandbox Code Playgroud)