postgresql - Postgresql SQL 抛出不明确的列错误
问题描述
我的 Postgres 数据库中有下表
CREATE TABLE "public"."zuffs"
(
"hash" bigint NOT NULL,
"zuff" BIGINT NOT NULL,
"lat" INTEGER NOT NULL,
"lng" INTEGER NOT NULL,
"weather" INTEGER DEFAULT 0,
"expires" INTEGER DEFAULT 0,
"clients" INTEGER DEFAULT 0,
CONSTRAINT "zuffs_hash" PRIMARY KEY ("hash")
) WITH (oids = false);
weather, expires & clients
如果该行已经存在,我想向其中添加新行或更新列。为此,我让我的 PHP 脚本生成以下 SQL
INSERT INTO zuffs (hash,zuff,lat,lng,weather,expires)
VALUES(5523216,14978310951341,4978,589,105906435,4380919) ON CONFLICT(hash) DO UPDATE SET
weather = 105906435,expires = 4380919,clients = clients + 1;
失败并出现错误
错误:列引用“客户”不明确
我不明白为什么会发生这种情况。我希望这里有人可以解释
解决方案
在 UPDATE 部分中,您应该使用 EXCLUDED “行”来引用这些值。并且要引用现有值,您需要再次为该列添加前缀,以避免“排除”和“当前”值之间的歧义:
INSERT INTO zuffs (hash,zuff,lat,lng,weather,expires)
VALUES (5523216,14978310951341,4978,589,105906435,4380919)
ON CONFLICT(hash) DO UPDATE
SET weather = excluded.weather,
expires = excluded.expires,
clients = zuffs.clients + 1;
推荐阅读
- keras - Keras 不能做但 Pytorch 可以做的详细例子?
- c# - 遍历目录和子目录
- ionic-framework - 我的阿拉伯语首先显示所有数字,然后阿拉伯语单词出现在 Ionic 4
- python-3.x - 模块“instaloader”没有属性“Instaloader”
- c - 如何用零初始化结构的数组字段
- python - 在 python postgres sql 中,创建和插入查询正在执行而没有错误,但是在检查数据库时它没有得到更新
- animation - 如何制作像 VideoScribe 这样的桌面软件?
- java - 多对多关系的连接查询
- javascript - 正则表达式组排除组内的子字符串
- python - Python,问题获取带有按钮的组合框的值