【发布时间】:2018-12-13 12:59:50
【问题描述】:
我想向表中插入或更新数据。 “组”列是唯一的,组的 ID 应保持不变。
有一个小提琴: http://sqlfiddle.com/#!17/551ea/3
在插入时,一切正常
更新也适用于“Group”='TEST01'
但是当我插入一个新组然后更新时,ID会改变(按多个“运行SQL”)
这是我的插入查询:
INSERT INTO GROUPS ("GROUP", SERVER, PATH, SHARE)
VALUES ('TEST04', 4, 4, 4)
ON CONFLICT("GROUP") DO UPDATE
SET SERVER = 11,
PATH = 11,
SHARE = 11
WHERE GROUPS."GROUP" = 'TEST01'
ID 将在其他表中使用,这应该只为第一个条目创建一次。
这是一般结构:
CREATE SEQUENCE gid START 1;
CREATE TABLE GROUPS (
ID integer NOT NULL DEFAULT nextval('gid') PRIMARY KEY,
"GROUP" VARCHAR NOT NULL UNIQUE,
SERVER integer,
PATH integer,
SHARE integer
);
【问题讨论】:
-
我认为这是 SQLFiddle 的问题,不是你的 SQL 的问题。使用“普通”SQL 客户端针对未在 Internet 上共享的数据库运行您的脚本。代码很好,可以正常工作。
标签: sql postgresql insert-update postgresql-9.5 sqlfiddle