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

AI Agent 跑完任务怎么通知你?我写了个微信推送服务帐

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.列名 来引用本次尝试插入但发生了冲突的那些值这是实现“用新值覆盖旧值”的关键。课章鼗坪

相关文章:

AI Agent 跑完任务怎么通知你?我写了个微信推送服务帐

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

Agent Client Protocol 全景解析腊

1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级)&#xff1a…...

特征选择实战:用F检验、互信息法搞定Kaggle高维数据,附完整Python代码与避坑指南

特征选择实战:用F检验与互信息法构建高维数据黄金特征集 在Kaggle竞赛和真实业务场景中,我们常常面对成百上千个特征的高维数据集。如何从中筛选出最具预测力的特征子集?本文将带你构建完整的特征选择流水线,从方差过滤到相关性筛…...

别再死记硬背了!用LabVIEW亲手搭建一个密码验证器,顺便搞懂字符串显示的4种模式

用LabVIEW打造密码验证器:解锁字符串显示的4种实战模式 在虚拟仪器技术的学习中,LabVIEW的字符串处理功能常常让初学者感到困惑。那些抽象的概念和枯燥的理论习题,如果能通过一个有趣的项目来理解,效果会大不相同。今天&#xff0…...

强化学习基础与实践:从理论到应用

强化学习基础与实践:从理论到应用 1. 背景介绍 强化学习(Reinforcement Learning,RL)是机器学习的一个重要分支,它关注的是智能体(Agent)如何在环境中通过与环境的交互学习最优行为策略&#…...

Python生产级日志封装完整解析_细节决定一切

logging等级 try:1 / 0 except Exception as e:logger.exception("计算错误")""" ERROR:test:计算错误 Traceback (most recent call last):File "test.py", line 6, in <module>1 / 0 ZeroDivisionError: division by zero没有堆栈信…...

直通大厂:腾讯二面高频考题,多Agent工作原理超详细拆解!

1. 题目分析 一个 Agent 能做的事情终归有限。当你试图让单个 Agent 去完成一个真正复杂的任务——比如从零开始做一次完整的市场调研并输出 PPT 报告——你会发现它要么因为上下文窗口塞满而"失忆"&#xff0c;要么因为角色定位太泛而每一步都做得半吊子。这就像让…...

实用高效:socat-windows网络数据转发实战配置与性能优化指南

实用高效&#xff1a;socat-windows网络数据转发实战配置与性能优化指南 【免费下载链接】socat-windows unofficial windows build of socat http://www.dest-unreach.org/socat/ 项目地址: https://gitcode.com/gh_mirrors/so/socat-windows socat-windows是Windows平…...

比迪丽LoRA模型参数深度解析:从CFG Scale到Clip Skip的调参实战

比迪丽LoRA模型参数深度解析&#xff1a;从CFG Scale到Clip Skip的调参实战 如果你已经能用比迪丽LoRA模型生成不错的图片&#xff0c;但总觉得效果差点意思——要么风格不够对味&#xff0c;要么细节不够精致&#xff0c;或者就是感觉“不够像”——那么恭喜你&#xff0c;来…...

AI 任务做到一半崩了怎么办?Checkpoint 救命指南

点击上方 前端Q&#xff0c;关注公众号回复加群&#xff0c;加入前端Q技术交流群上一篇讲了循环防护&#xff0c;解决了"Agent 跑不停"的问题。但还有一个同样头疼的问题&#xff1a; Agent 跑到一半&#xff0c;崩了。 网络抖动、API 限流、服务器重启、用户刷新页面…...

Spring with AI (): 搜索扩展——向量数据库与RAG(上)悄

先回顾&#xff1a;三次握手&#xff08;建立连接&#xff09;核心流程&#xff08;实际版&#xff09; 为了让挥手流程衔接更顺畅&#xff0c;咱们先快速回顾三次握手的实际核心&#xff0c;避免上下文脱节&#xff1a; 第一步&#xff08;客户端→服务器&#xff09;&#xf…...

【OpenClaw】通过 Nanobot 源码学习架构---()总体韭

核心摘要&#xff1a;这篇文章能帮你 ?? 1. 彻底搞懂条件分支与循环的适用场景&#xff0c;告别选择困难。 ?? 2. 掌握遍历DOM集合修改属性的标准姿势与性能窍门。 ?? 3. 识别流程控制中的常见“坑”&#xff0c;并学会如何优雅地绕过去。 ?? 主要内容脉络 ?? 一、痛…...

5分钟掌握ncmdumpGUI:轻松解密网易云音乐NCM文件

5分钟掌握ncmdumpGUI&#xff1a;轻松解密网易云音乐NCM文件 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&#xff0…...

ESP32-S3播放网络音频避坑指南:PlatformIO库依赖、I2S引脚冲突与内存优化

ESP32-S3音频开发实战&#xff1a;从库依赖管理到高稳定流媒体方案 引言&#xff1a;当智能硬件遇上音频流媒体 在物联网设备上实现音频播放功能&#xff0c;听起来像是把手机上的功能搬到了一个小开发板上——直到你真正开始动手。ESP32-S3凭借其双核处理能力和丰富的外设接口…...

手把手教你用Arduino和BLE键盘库打造智能音乐控制器(附完整代码)

手把手教你用Arduino和BLE键盘库打造智能音乐控制器&#xff08;附完整代码&#xff09; 在智能家居和物联网项目蓬勃发展的今天&#xff0c;将物理按键与数字媒体控制相结合的需求日益增长。想象一下&#xff0c;只需轻触一个实体按钮就能切换音乐、调节音量&#xff0c;甚至无…...

如何用AGORA数据集快速提升你的3D人体姿态估计模型(附SMPL-X真值使用技巧)

如何用AGORA数据集快速提升你的3D人体姿态估计模型&#xff08;附SMPL-X真值使用技巧&#xff09; 在计算机视觉领域&#xff0c;3D人体姿态估计一直是研究热点&#xff0c;但高质量标注数据的获取成本极高。AGORA数据集的出现为这一难题提供了突破性解决方案——它通过高度逼…...

深入剖析HAL库I2C通信协议实现机制

1. 为什么需要深入理解HAL库I2C实现 很多嵌入式开发者在使用STM32的HAL库操作I2C时&#xff0c;都会遇到一个奇怪的现象&#xff1a;明明按照手册调用了HAL_I2C_Master_Transmit()函数&#xff0c;但设备就是不响应。这时候如果只会调用API&#xff0c;问题就卡住了。我当年调试…...

OpenClaw+Qwen3-4B办公自动化:飞书机器人配置与会议纪要生成

OpenClawQwen3-4B办公自动化&#xff1a;飞书机器人配置与会议纪要生成 1. 为什么选择OpenClawQwen3-4B做办公自动化 去年夏天&#xff0c;我经历了连续三周每天手动整理会议纪要的痛苦。作为团队的技术负责人&#xff0c;我需要参加各种技术讨论会&#xff0c;会后要花1-2小…...

Comsol仿真:周期性结构多级分解的奇妙之旅

comsol仿真计算周期性结构的多级分解&#xff0c;与论文结果几乎一致最近在搞周期性结构的研究&#xff0c;其中多级分解这一块可真是费了我不少脑细胞。好在有Comsol仿真这个强大的工具&#xff0c;帮我把理论上复杂的多级分解问题&#xff0c;转化为直观的仿真结果&#xff0…...

我不是狐狸,我是那Harness Engineering炼

Julia&#xff08;julialang.org&#xff09;由Stefan Karpinski、Jeff Bezanson等在2009年创建&#xff0c;目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是&#xff1a; 高性能&#xff1a;编译型语言&#xff08;JIT&#xff0…...

最新门店扫码点餐系统源码 小程序点餐系统 点餐APP uniapp多端接入

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 点餐系统基于javaSpringBootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程…...

Pretext:值得关注的文本排版引擎斯

一、语言特性&#xff1a;Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一&#xff0c;就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

别再吹牛了,% Vibe Coding 存在无法自洽的逻辑漏洞!氛

简介 langchain中提供的chain链组件&#xff0c;能够帮助我门快速的实现各个组件的流水线式的调用&#xff0c;和模型的问答 Chain链的组成 根据查阅的资料&#xff0c;langchain的chain链结构如下&#xff1a; $$Input \rightarrow Prompt \rightarrow Model \rightarrow Outp…...

墨语灵犀完整指南:支持的语言列表+字符编码兼容性+特殊符号处理

墨语灵犀完整指南&#xff1a;支持的语言列表字符编码兼容性特殊符号处理 1. 产品概述 墨语灵犀&#xff08;Moyu Lingxi&#xff09;是一款基于腾讯混元大模型底座开发的深度翻译工具。与普通翻译软件不同&#xff0c;它将前沿的AI翻译技术融入"冷金笺"与"砚…...

pymilvus操作milvus向量数据库笔记(二)

文章目录表结构迁移通过代码迁移内容有点多&#xff0c;拆出来一篇。表结构迁移 导出schema太难看了。 通过代码迁移...

3步掌握抖音无水印下载:让视频采集效率提升300%

3步掌握抖音无水印下载&#xff1a;让视频采集效率提升300% 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

ABB机器人编程避坑指南:从数据类型到运动指令的7个易错点

ABB机器人编程避坑指南&#xff1a;从数据类型到运动指令的7个易错点 第一次在RobotStudio里看到机器人因为数据类型错误突然停止时&#xff0c;我盯着报错信息足足愣了五分钟。这种经历在ABB机器人编程中并不罕见——从数据类型选择到运动指令参数设置&#xff0c;每个环节都可…...

Python新手必看:彻底搞懂 | ^的二进制运算原理(图解版)

Python新手必看&#xff1a;彻底搞懂& | ^的二进制运算原理&#xff08;图解版&#xff09; 在编程的世界里&#xff0c;二进制运算就像是一把打开计算机底层逻辑的钥匙。对于Python初学者来说&#xff0c;理解&、|、^这些位运算符的工作原理&#xff0c;不仅能帮助你写…...

Pretext:值得关注的文本排版引擎关

一、语言特性&#xff1a;Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一&#xff0c;就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

KEPServerEX深度解析:工业数据采集与OPC UA通信的实战指南

1. KEPServerEX&#xff1a;工业数据采集的"万能转换器" 想象一下&#xff0c;工厂里躺着几十台不同品牌的PLC设备&#xff0c;有的用西门子S7协议&#xff0c;有的用三菱的MC协议&#xff0c;还有的用Modbus RTU——它们就像说着不同方言的人&#xff0c;互相听不懂…...