我创建了这个表格:
为什么会出现语法错误?
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
);
我尝试运行这个PostgreSQL脚本:
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)
activity_name
没有唯一约束,那么该字段就不会发生冲突(即如果没有约束,它会与什么冲突?)。通过在该列上添加唯一索引,冲突操作才有意义,因此应该可以正常工作。 - JohnLBevanconflict_target
。 - JohnLBevan