PostgreSQL 9.1.11是否支持ON CONFLICT?使用时出错求助
PostgreSQL 9.1.11是否支持ON CONFLICT语法?
- 不支持。
ON CONFLICT是PostgreSQL 9.5版本才正式引入的语法,用于实现UPSERT(插入或更新)逻辑,9.1.11作为更早的版本,完全没有该语法支持,这就是你使用该代码报错的直接原因。 - 针对9.1.11版本的替代实现方案:
- 方案一:用
INSERT ... WHERE NOT EXISTS结合子查询避免重复插入INSERT INTO your_table (col1, col2) VALUES ('val1', 'val2') WHERE NOT EXISTS ( SELECT 1 FROM your_table WHERE col1 = 'val1' ); - 方案二:通过事务组合更新/插入逻辑实现类似UPSERT效果
注:使用该方案时,需确保目标列存在唯一约束,避免并发场景下出现数据冲突。BEGIN; UPDATE your_table SET col2 = 'val2' WHERE col1 = 'val1'; IF NOT FOUND THEN INSERT INTO your_table (col1, col2) VALUES ('val1', 'val2'); END IF; COMMIT;
- 方案一:用
内容的提问来源于stack exchange,提问作者Shabrina Nurdiani S
相关产品推荐
相关产品推荐

