当前位置: 首页 > article >正文

不用装软件!这款MicroPython浏览器 IDE :让你在手机上也能调试树莓派 Pico酉

1、普通的insert into如果主键/唯一建存在则会报错新需求就算冲突也不报错用其他处理逻辑回到顶部2、基本语法INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)语法图“保留旧数据静默跳过”“用新数据替换或修改旧数据”“是只更新部分字段”“是需满足条件才更新”“否全量覆盖”开始: INSERT发生主键/唯一冲突冲突后的期望是?使用 ON CONFLICT DO NOTHING使用 ON CONFLICT DO UPDATE SET需要精细控制吗?在SET中仅指定目标字段添加WHERE子句使用EXCLUDED.*或指定所有字段?? 两种核心处理逻辑为了方便你对比和理解我将它们总结在下表中处理逻辑 关键字 核心行为与目的 类比1. 静默放弃 DO NOTHING 如果冲突数据已存在就什么也不做静默地保留现有数据并让语句成功结束。 “无视”看到店里已有同样的商品就决定不放了直接离开。2. 更新覆盖 DO UPDATE SET ... 如果冲突数据已存在就用新值更新已有的那条记录。 “置换”看到店里已有同样的商品就用你手里的新款替换掉旧款。语法1DO UPDATE SETINSERT INTO 表名 (列1, 列2, ...)VALUES (值1, 值2, ...)ON CONFLICT (冲突列[可以多个])DO UPDATE SET列1 EXCLUDED.列1,列2 EXCLUDED.列2,...;语法2DO NOTHINGINSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...)ON CONFLICT (冲突列[可以多个])DO NOTHING;回到顶部3、示例3.1、简单示例-- 示例1: DO NOTHING - 确保数据唯一重复则忽略-- 场景收集用户邮箱同一邮箱只记录第一次出现INSERT INTO user_emails (email, collected_at, source)VALUES (aliceexample.com, NOW(), 官网抽奖)ON CONFLICT (email)DO NOTHING; -- 如果邮箱已存在则静默跳过不报错-- 示例2: DO UPDATE SET - 用最新信息覆盖旧记录-- 场景更新用户的最后登录状态INSERT INTO user_sessions (user_id, last_login_ip, last_login_time, login_count)VALUES (123, 192.168.1.100, NOW(), 1)ON CONFLICT (user_id)DO UPDATE SETlast_login_ip EXCLUDED.last_login_ip, -- 使用本次尝试插入的新IPlast_login_time EXCLUDED.last_login_time, -- 更新时间login_count user_sessions.login_count 1; -- 在原有次数上累加3.2、ON CONFLICT 多列组合唯一约束示例场景说明假设我们有一个学生选课记录表设计逻辑是单个学生可以选多门课单门课程可以被多个学生选但 一个学生不能重复选同一门课即 (student_id, course_id) 组合必须唯一示例表结构CREATE TABLE student_courses (-- 自增主键但不是业务唯一键id SERIAL PRIMARY KEY,student_id INT NOT NULL,course_id INT NOT NULL,selected_at TIMESTAMP DEFAULT NOW(),status VARCHAR(20) DEFAULT active,-- 关键为(student_id, course_id)创建组合唯一约束CONSTRAINT unique_student_course UNIQUE (student_id, course_id));示例数据假设表中已有数据id student_id course_id selected_at status1 1001 101 2024-01-01 active2 1001 102 2024-01-02 active3 1002 101 2024-01-03 active场景1尝试重复选课 → 使用 DO NOTHING学生1001想再次选择课程101已存在我们静默拒绝INSERT INTO student_courses (student_id, course_id, selected_at)VALUES (1001, 101, NOW()) -- (1001,101)组合已存在ON CONFLICT (student_id, course_id) -- 指定两列组合为冲突目标DO NOTHING; -- 什么都不做防止重复选课-- 结果语句执行成功但没有插入新行-- 表数据保持不变场景2尝试重复选课 → 使用 DO UPDATE SET学生1001重复选课101但我们允许更新选择时间和状态INSERT INTO student_courses (student_id, course_id, selected_at, status)VALUES (1001, 101, NOW(), renewed) -- 再次尝试选择已选课程ON CONFLICT (student_id, course_id) -- 检测(student_id, course_id)组合冲突DO UPDATE SETselected_at EXCLUDED.selected_at, -- 更新时间戳status EXCLUDED.status, -- 更新状态id student_courses.id -- 保持原id不变避免主键冲突RETURNING *; -- 返回更新后的行-- 结果不会创建新行而是更新id1的记录-- 将selected_at更新为当前时间status更新为renewed场景3混合情况处理批量插入选课记录处理各种冲突情况INSERT INTO student_courses (student_id, course_id, selected_at)VALUES(1001, 103, NOW()), -- 新组合插入成功(1001, 101, NOW()), -- 已存在组合触发ON CONFLICT(1002, 102, NOW()) -- 新组合插入成功ON CONFLICT (student_id, course_id)DO UPDATE SETselected_at EXCLUDED.selected_at,status refreshedRETURNING student_id, course_id, selected_at;输出结果可能student_id | course_id | selected_at------------------------------------------------1001 | 103 | 2024-06-15 10:30:00.000 -- 新插入1001 | 101 | 2024-06-15 10:30:00.000 -- 更新冲突处理1002 | 102 | 2024-06-15 10:30:00.000 -- 新插入3.3、其他多列唯一约束示例示例1会议室预订系统-- 确保同一会议室在同一时间段不被重复预订-- 唯一约束(room_id, date, time_slot)INSERT INTO room_bookings (room_id, date, time_slot, booker_name)VALUES (101, 2024-06-20, 09:00-10:00, 张三)ON CONFLICT (room_id, date, time_slot)DO NOTHING; -- 时间段冲突则直接拒绝示例2用户-产品评分表-- 确保一个用户对同一产品只能评分一次-- 唯一约束(user_id, product_id)INSERT INTO product_ratings (user_id, product_id, rating, review)VALUES (5001, 3005, 5, 非常好用)ON CONFLICT (user_id, product_id)DO UPDATE SETrating EXCLUDED.rating,review EXCLUDED.review,rated_at NOW();关键要点总结语法格式ON CONFLICT (column1, column2, ...) 用括号包含多个列约束要求这些列必须已定义组合唯一约束可以是复合主键或复合唯一约束冲突检测只有当所有指定列的值都完全匹配时才被认为是冲突常见场景多对多关系表、时间-资源组合、用户-实体关联表等这种多列约束特别适合处理业务层面的组合唯一性要求而不仅仅是技术上的主键唯一性。回到顶部4、特殊参数解析冲突列[可以多个]ON CONFLICT 后面必须指定一个唯一约束主键也可以字段多个字段唯一也可以关键机制冲突目标ON CONFLICT 后面必须指定一个唯一约束通常是主键或唯一索引。当插入的数据在这个约束上与已有数据冲突时就会触发 UPDATE 操作。约束要求这些列必须已定义组合唯一约束可以是复合主键或复合唯一约束EXCLUDED 伪表在 DO UPDATE SET 子句中你可以使用 EXCLUDED.列名 来引用本次尝试插入但发生了冲突的那些值这是实现“用新值覆盖旧值”的关键。宜肚谜星

相关文章:

不用装软件!这款MicroPython浏览器 IDE :让你在手机上也能调试树莓派 Pico酉

1、普通的insert into 如果(主键/唯一建)存在,则会报错 新需求:就算冲突也不报错,用其他处理逻辑 回到顶部 2、基本语法(INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)) 语…...

手把手教你:在Ubuntu 22.04上从源码编译安装GMP库(解决NTL依赖)

在Ubuntu 22.04上从源码构建GMP库:解决数学计算依赖的完整指南 当你在Linux环境下开发需要高性能数学运算的应用时,GMP(GNU Multiple Precision Arithmetic Library)往往是绕不开的基础设施。这个开源库为任意精度数学运算提供了…...

PCB板材核心技术解析:从材料特性到高速信号设计

1. PCB板材基础:从树脂到铜箔的进化史 第一次拆开手机后盖时,你可能注意过那块绿色的电路板——它就是PCB(Printed Circuit Board)。但你可能不知道,这块看似简单的板子,其实藏着材料科学的精妙设计。让我用…...

15分钟搞定黑苹果EFI配置:OpCore-Simplify如何解决传统方案98%的技术难题?

15分钟搞定黑苹果EFI配置:OpCore-Simplify如何解决传统方案98%的技术难题? 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹…...

Java-RPG-Maker-MV-Decrypter:5步轻松解密RPG游戏资源的完整教程

Java-RPG-Maker-MV-Decrypter:5步轻松解密RPG游戏资源的完整教程 【免费下载链接】Java-RPG-Maker-MV-Decrypter You can decrypt whole RPG-Maker MV Directories with this Program, it also has a GUI. 项目地址: https://gitcode.com/gh_mirrors/ja/Java-RPG-…...

VOICEVOX完全指南:免费开源日语语音合成软件的5大核心功能详解

VOICEVOX完全指南:免费开源日语语音合成软件的5大核心功能详解 【免费下载链接】voicevox 無料で使える中品質なテキスト読み上げソフトウェア、VOICEVOXのエディター 项目地址: https://gitcode.com/gh_mirrors/vo/voicevox VOICEVOX是一款免费开源的中品质…...

如何轻松实现跨设备控制:Barrier跨平台KVM软件完全指南

如何轻松实现跨设备控制:Barrier跨平台KVM软件完全指南 【免费下载链接】barrier Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/ba/barrier 你是否厌倦了在多台电脑之间来回切换键盘鼠标?Barrier作为一款强大的开源KVM软件…...

IDEA开发效率提升:南北阁Nanbeige4.1-3B智能插件开发

IDEA开发效率提升:南北阁Nanbeige4.1-3B智能插件开发 告别重复劳动,让AI成为你的编程搭档 作为一名常年使用IDEA的开发者,我深知编码过程中那些琐碎却耗时的环节:写模板代码、寻找重构机会、分析依赖关系...直到尝试了南北阁Nanbe…...

企业超自动化落地,如何实现端到端的全流程闭环?2026企业级智能体架构与全景选型深度解析丨Agent产品测评局

站在2026年的技术节点回望,企业数字化转型已从单纯的“工具替代”演进到“原生智能”阶段。超自动化(Hyperautomation)不再是多种技术的简单堆砌,而是以企业级智能体为核心,通过深度融合AGI、计算机视觉与超自动化全栈…...

如何用猫抓扩展轻松下载网页视频:从零开始的完整指南

如何用猫抓扩展轻松下载网页视频:从零开始的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载网页视频而烦恼吗&…...

同花顺_策略解码_五彩K线实战指南

1. 五彩K线入门:从代码看市场语言 第一次打开同花顺的五彩K线功能时,我盯着屏幕上突然变得花花绿绿的走势图愣了半天。这些红红绿绿的标记背后,其实藏着程序员用代码翻译的市场密码。就像交通信号灯用颜色指挥车辆通行,五彩K线用颜…...

易语言串口通讯源码:掌握工业控制与通讯的关键

易语言 串口通讯 源码 串口通讯写好了 ,就可以轻松地控制电力仪表 信号采集 单片机等 信号 。 本源码为串口调试助手源码 此源码对了解以下知识非常重要 工业控制, 232通讯, 485通讯, MODbus协议, CRC16检验算法&am…...

Nomic-Embed-Text-V2-MoE快速上手:Python安装与环境配置全攻略

Nomic-Embed-Text-V2-MoE快速上手:Python安装与环境配置全攻略 你是不是也对最近火热的文本嵌入模型感兴趣,想亲手试试那个号称性能很强的Nomic-Embed-Text-V2-MoE?但一看到要配置Python环境、安装各种库,就觉得头大,…...

AIAgent内容冷启动失败率下降86%的密钥:奇点大会闭门工作坊流出的「意图-结构-信噪比」三维校准法

第一章:AIAgent内容冷启动失败率下降86%的密钥:从现象到范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 传统AIAgent冷启动阶段常因初始知识稀疏、意图建模失准与上下文锚定漂移,导致首周任务失败率高达73.5%。2025年Q2多家头部Agen…...

【奇点大会内部纪要】:为什么92%的视觉导航Agent在动态场景中失效?3类被忽视的传感器-语义耦合漏洞

第一章:【奇点大会内部纪要】:为什么92%的视觉导航Agent在动态场景中失效?3类被忽视的传感器-语义耦合漏洞 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点大会闭门技术纪要中,来自MIT、ETH Zurich与大疆研究院的联合…...

从理论到代码:手把手复现李航《统计学习方法》第2版经典算法(附习题思路)

从理论到代码:手把手复现李航《统计学习方法》第2版经典算法 统计学习作为机器学习的重要分支,其理论体系严谨而深厚。李航教授的《统计学习方法》第2版堪称该领域的经典教材,但许多读者在从理论理解到代码实现的跨越中常遇到障碍。本文将带你…...

AIAgent架构中通信协议设计的7个致命误区(2024年生产环境真实故障复盘)

第一章:AIAgent架构中通信协议设计的演进与挑战 2026奇点智能技术大会(https://ml-summit.org) 现代AIAgent系统已从单体推理服务演进为多角色协同的分布式智能体网络,其核心依赖于高效、语义明确且可扩展的通信协议。早期基于HTTP/REST的轻量交互难以支…...

【无标题】第1章 分布式认知雷达网络与多智能体协同

目录 1.1 异构网络化感知架构 1.1.1 分布式相参阵列与频谱共生 1.1.2 频谱共享的势博弈模型 1.2 去中心化部分可观测马尔可夫决策过程(Dec-POMDP) 1.2.1 数学形式化 1.2.2 值分解网络(VDN)的可加性验证 1.3 MultiAgentRadarSim 仿真框架 1.4 验证与批判性分析 1.4.…...

Ostrakon-VL-8B参数详解:BFloat16精度下8B参数量对零售场景的针对性优化

Ostrakon-VL-8B参数详解:BFloat16精度下8B参数量对零售场景的针对性优化 1. 为什么零售场景需要专门的视觉大模型? 如果你在零售行业工作过,或者自己开过店,一定遇到过这样的问题:每天要花大量时间检查货架、盘点库存…...

从一次‘路由翻车’事故讲起:手把手调试你的RIP网络(Wireshark抓包分析)

当RIP协议突然罢工:一次真实网络故障的深度解剖 凌晨三点,整个数据中心只剩下服务器指示灯在黑暗中闪烁。突然,监控系统发出刺耳的警报声——核心业务网络的流量曲线断崖式下跌。值班工程师小张的睡意瞬间消散,他面前的拓扑图上&a…...

网络型AIS接收机R400N 产品说明书

目录 产品概述产品特点应用场景相关产品技术规格标准配件 1. 产品概述 R400N(原型号 SLR350N)是工业级双通道 AIS 接收机,可接收 VHF 通信范围内船舶的 AIS 信号,解析船舶位置、航速、航向等信息。该设备采用高灵敏度双通道并行接…...

VsionPro经典PatMax_Demo.idb图片分析

VsionPro自带数据集,位置:C:\Program Files\Cognex\VisionPro\Images(默认位置)PatMax_Demo.idb 是 VisionPro 最经典的高精度几何模板匹配教学案例,用一个复杂机械零件直观展示 PatMax 在旋转、缩放、遮挡、光照变化下…...

通义千问1.5-1.8B-Chat-GPTQ-Int4在STM32开发中的妙用:嵌入式C代码分析与调试建议生成

通义千问1.5-1.8B-Chat-GPTQ-Int4在STM32开发中的妙用:嵌入式C代码分析与调试建议生成 1. 引言:当嵌入式开发遇上轻量化大模型 如果你是一位嵌入式工程师,特别是和STM32这类MCU打交道的朋友,下面这个场景你一定不陌生&#xff1…...

nomic-embed-text-v2-moe效果对比:在低资源语言(如尼泊尔语)上的零样本迁移能力

nomic-embed-text-v2-moe效果对比:在低资源语言(如尼泊尔语)上的零样本迁移能力 1. 引言:当AI遇到“小众”语言 想象一下,你正在开发一个面向全球用户的智能搜索应用。对于英语、中文这类主流语言,市面上…...

ollama一键启动QwQ-32B:开源可部署+高算力适配双优势解析

ollama一键启动QwQ-32B:开源可部署高算力适配双优势解析 如果你正在寻找一个推理能力强、部署简单,而且对硬件要求相对友好的大语言模型,那么QwQ-32B绝对值得你花几分钟了解一下。 我最近在测试各种开源模型时,发现了一个很有意…...

[具身智能-361]:Hugging Face(通常被称为“抱抱脸”)是当今人工智能领域最核心的开源平台,被广泛誉为 “AI 界的 GitHub”。

Hugging Face(通常被称为“抱抱脸”)是当今人工智能领域最核心的开源平台,被广泛誉为 “AI 界的 GitHub”。 简单来说,它是一个为全球开发者提供模型、数据集和代码的协作社区。无论你是想下载现成的大模型(如 Llama …...

边缘计算与软件开发:新职业场景——软件测试从业者的转型指南

一、边缘计算重构软件测试疆域随着物联网设备突破300亿大关(2025年数据),边缘计算以28.3%的年复合增长率重塑IT架构。到2026年,75%的新建企业系统将采用“云-边-端”三级协同架构,这对软件测试领域带来根本性变革&…...

5个步骤让普通鼠标在macOS上获得超越苹果触控板的体验

5个步骤让普通鼠标在macOS上获得超越苹果触控板的体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾经为第三方鼠标在macOS上的糟糕体…...

2026奇点智能技术大会核心成果(视觉导航Agent工业级部署白皮书首曝)

第一章:2026奇点智能技术大会:AIAgent视觉导航 2026奇点智能技术大会(https://ml-summit.org) 核心突破:端到端视觉-动作联合建模 本届大会首次公开部署的AIAgent视觉导航系统,摒弃传统SLAM路径规划分层架构,采用统一…...

Amazon S3 Files 实战:S3 终于能当文件系统挂载了,NFS 直接读写对象存储

test...