sql - PostgreSQL ERROR 列不存在指的是列值

标签 sql string postgresql sql-update sql-insert

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

id.    project_name.   col3.  col4
1111.   test.          ...    ...

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

INSERT INTO projects(id, project_name)
VALUES("1234", "Test_Project")
ON CONFLICT (id)
DO NOTHING

但是它抛出一个错误

Query 1 ERROR: ERROR:  column "1234" does not exist
LINE 2: VALUES("1234", "Test_Project_...

请提出建议。

** 编辑**

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

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

我得到以下错误

Query 1 ERROR: ERROR:  syntax error at or near "create"
LINE 3: ON CONFLICT (create unique index on projects(id...

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

最佳答案

对文字字符串使用单引号。双引号代表标识符(例如列名或表名)——因此出现错误:

INSERT INTO projects(id, project_name)
VALUES('1234', 'Test_Project')
ON CONFLICT (id)
DO NOTHING

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

INSERT INTO projects(id, project_name)
VALUES(1234, 'Test_Project')
ON CONFLICT (id)
DO NOTHING

关于sql - PostgreSQL ERROR 列不存在指的是列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64216805/

相关文章:

mysql - 出于专利研究目的进行复杂的 SQL 查询时陷入困境

java - Java String.toUpperCase() 会失败吗?

c++ - 将转义的 UTF-8 八位字节的字符数组转换为 C++ 中的字符串

sql - 在不到 1 小时前创建通知的同一端点上查找没有通知和先前没有响应的响应

postgresql - 与 RDBMS 无关的事务复制子系统的注意事项

postgresql - Postgresql 中的文本相等运算符性能

sql - SnowFlake MERGE 更新/插入所有列

mysql - SQL查询检索对话记录

sql - 如何跨多个数据库向sql server中的列添加外键约束?

ios - NSUserDefaults 在 SpriteKit Swift 中正确存储字符串