我创建了这个表:
CREATE TABLE IF NOT EXISTS config_activity_log
(
id serial primary key,
activity_name varchar(100) NOT NULL,
last_config_version varchar(50) NOT NULL,
activity_status varchar(100) NOT NULL DEFAULT 'Awaiting for cofman',
cofman_last_update bigint NOT NULL DEFAULT -1,
is_error boolean DEFAULT FALSE,
activity_timestamp timestamp DEFAULT current_timestamp
);
我尝试运行以下postgres脚本:
INSERT INTO config_activity_log
(activity_name, last_config_version, activity_status)
VALUES
('test awating deployment','5837-2016-08-24_09-12-22', 'Awaiting for deployment')
ON CONFLICT (activity_name)
DO UPDATE SET
activity_status = EXCLUDED.activity_status
为什么会出现此语法错误?
psql:upsert_test_log.sql:7: ERROR: syntax error at or near "ON"
LINE 5: ON CONFLICT (activity_name)
支持版本
根据以上@klin的评论,ON CONFLICT
仅 PostgreSQL 9.5及 更高版本支持。
独特的约束
在添加唯一索引activity_name
。目前,该列上没有任何约束,因此该列上没有冲突的可能性。
CREATE UNIQUE INDEX UK_config_activity_log__activity_name
ON config_activity_log (activity_name);
但是,如果您不希望该列是唯一的,那么您打算遇到什么冲突/您希望通过该on conflict
操作解决的问题是什么?
请参阅https://www.postgresql.org/docs/9.5/static/sql-insert.html#SQL-ON-
CONFLICT
中的flict_target
另一种语法是修改您的create语句,以在其中包含唯一条件。例如
CREATE TABLE IF NOT EXISTS config_activity_log
(
id serial primary key,
activity_name varchar(100) NOT NULL UNIQUE,
last_config_version varchar(50) NOT NULL,
activity_status varchar(100) NOT NULL DEFAULT 'Awaiting for cofman',
cofman_last_update bigint NOT NULL DEFAULT -1,
is_error boolean DEFAULT FALSE,
activity_timestamp timestamp DEFAULT current_timestamp
);
问题内容: 我是Postgres的新手,正在从事我的工作。我不得不创建一个只有1列的表,然后让我在pgadmin III上运行以下语句: 当我运行此命令时,出现以下错误:“ IF”或附近的语法错误 我已经看过这个38.6.2。条件句38.6.2。条件句,我对此不太了解,是否需要将查询更改为 然后当它结束时,我应该以: 为什么毕竟有错误? 问题答案: IF和其他PL / pgSQL功能仅在PL /
我在Postgres中执行了这个SQL语句 而且 是表名 是具有整数数据类型的列名。 我想根据用户的输入将数据类型修改为boolean或text或varchar(256)等。但是当我运行查询时,我得到了错误 错误:“modify”或“modify”附近有语法错误 不确定是什么问题。右侧查询需要帮助。
我试图通过使用postgres数据库设置Spring Boot项目。我的实体是:- 用户 作用 用户_角色 我的< code > application . properties 文件如下所示 所以每当我运行这个应用程序。在postgresql数据库上成功创建了user_role和role表。但用户实体抛出异常。 错误说:- 正如您所看到的实体上的错误点。但是当应用程序连接到mysql数据库时,相
问题内容: 我有一个小查询,并在其旁边放了一个联合查询。但是,联合中存在语法错误。 这是我收到的错误 问题答案: 我知道出了什么问题。您必须在查询的末尾且仅在末尾下订单。它给了我一个错误,因为它认为查询已结束。 做到了。
我想通过psycopg2将csv文件导入PostgreSQL。但是,csv文件列名包含特殊字符。我可以用这些代码行通过psycopg2创建一个表。 当我想使用copy_from函数导入带有这些代码行的csv文件时。 它总是返回错误psycopg2。错误。SyntaxError:在“/”处或附近出现语法错误 我尝试在特殊字符之前使用反斜杠,或者将特殊列名放在双引号中,但它仍然返回相同的错误消息。如何
首先,有类似的问题,比如1,2,3,4,5,但没有提到解决这个问题的答案。 LogCat错误 09-02 05:27:31.213: E/SQLiteDatabase(8442):错误插入日=2个月=9值=3.0年=2015 09-02 05:27:31.213: E/SQLiteDatabase(8442):android.database.sqlite.SQLiteExc0019:近空:语法错