尝试用一组新的值更新表,
如果值已经存在,那么它应该更新字段,如果不存在,那么它应该插入字段。
WITH f AS (
SELECT 1 as MarketId,
'dros@test.com' as userName,
28 as age,
1 as isPremiumMember,
1 as isSubscribed,
'2021-03-12T17:07:30' as LastModifiedOn
from members
)
INSERT INTO members
(age,isPremiumMember,isSubscribed, lastModifiedOn)
VALUES (f.age,f.isPremiumMember,f.isSubscribed,f.lastModifiedOn)
ON CONFLICT (age,isPremiumMember,isSubscribed,lastModifiedOn)
DO UPDATE SET age= EXCLUDED.age,isPremiumMember = EXCLUDED.isPremiumMember,isSubscribed= EXCLUDED.isSubscribed,lastModifiedOn= EXCLUDED.lastModifiedOn;
但是,当我运行查询时,会出现以下错误:
missing FROM-clause entry for table "f"
试图用纯SQL编写这个
插入成员(年龄、isPremiumMember、isSubscribed、lastModifiedOn)从f中选择年龄、isPremiumMember、isSubscribed、lastModifiedOn(年龄、isPremiumMember、isSubscribed、lastModifiedOn)进行更新设置年龄=排除。年龄,ispremiummber=不包括在内。ispremiummber,isSubscribed=已排除。isSubscribed,lastModifiedOn=已排除。拉斯顿;
尝试将唯一约束添加为下面的“按建议选择”。这是我目前的声明。
简化的示例,用于upsert查询(避免使用CTE):
\i tmp.sql
create table members (
member_id integer primary key
, name text
, eyes text
, hair text
);
INSERT INTO members(member_id, name, eyes, hair) VALUES
(1, 'Lisa', 'brown', 'brown'),
(2, 'Bob', 'brown', 'brown');
\echo Initial
SELECT * FROM members order by 1;
INSERT INTO members(member_id,name, eyes, hair)
VALUES(1, 'Alice', 'blue', 'blonde' )
ON conflict (member_id) DO
UPDATE SET name = EXCLUDED.name, eyes = EXCLUDED.eyes, hair = EXCLUDED.hair
;
\echo After the update
SELECT * FROM members order by 1;
结果:
DROP SCHEMA
CREATE SCHEMA
SET
CREATE TABLE
INSERT 0 2
Initial
member_id | name | eyes | hair
-----------+------+-------+-------
1 | Lisa | brown | brown
2 | Bob | brown | brown
(2 rows)
INSERT 0 1
After the update
member_id | name | eyes | hair
-----------+-------+-------+--------
1 | Alice | blue | blonde
2 | Bob | brown | brown
(2 rows)
尝试使用select而不是f。
INSERT INTO members
(age,isPremiumMember,isSubscribed, lastModifiedOn)
select age,isPremiumMember,isSubscribed,lastModifiedOn from f
ON CONFLICT (age,isPremiumMember,isSubscribed,lastModifiedOn)
DO UPDATE SET age= EXCLUDED.age,isPremiumMember = EXCLUDED.isPremiumMember,isSubscribed= EXCLUDED.isSubscribed,lastModifiedOn= EXCLUDED.lastModifiedOn;
问题内容: 我正在尝试通过以下查询使用视图和表格 错误是 问题答案: SELECT AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, BillLimit, Mode, PNotes, gtab82.memno FROM VCustomer AS v1 INNER JOIN gtab82
我有一个地址对象,它具有城市属性。创建要通过EF6插入的全新地址时,我会填写所有必需的基本地址属性(地址行1、邮政编码等),但我不需要完全水合的城市实例,只要它具有如下ID: 当我尝试插入我的地址时,它也会尝试对城市的属性进行验证,但我不想对城市进行任何CRUD,因为我只需要它的ID。 我发现了下面的问题,它引导我从DbContext中分离条目,这样EF就不会试图对所述对象执行CRUD: 如何阻止
通过创建的临时表。
我有一个模型 视图定位对象: 然后它会做出一些改变(或者可能不会) 然后它尝试保存任何更改: 这里是Django尝试插入另一行而不是更新的地方,导致了一个DB错误 解决方案中有一种类似的问题: 一旦我将primary_key字段设置为自动字段,问题就消失了。 但是,我的主键已经是一个自动字段。 所以我用调试器逐步浏览了django代码,并在文件中资助了这个: 似乎如果没有更改(因此更新不做任何事情
我有一个连续接收流插入的表(可能每秒数千个)。 我对使用更新功能(通过API调用)添加列感兴趣。我可以在数据仍在插入时调用Update将列添加到现有表中,而无需担心数据丢失吗? 作为参考,这是我计划用于向表中添加列的代码:
这是我的ProdottoController: Prodotto实体: 这是视图(Freemarker): 当我尝试将值更新到表中时,出现以下错误: FreeMarker模板错误(调试模式;在生产中使用RETHROW!):以下内容已评估为null或缺失:==