当前位置: 首页 > 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)) 语…...

openclaw 两个案例

1. 用 OpenClaw Nano Banana 自动生成视频分镜,联动即梦实现文生视频自动化生成;1.1这里首先用到的是claude code 写skill一个skill是操作gemini网页根据文生图;图生图;视频生图;一个skill是根据提示词生成分镜序列1.…...

情感计算模块不是独立插件——它正在重构AIAgent的推理链:基于LLM-Emotion Joint Training的3层耦合架构首度公开

第一章:情感计算模块不是独立插件——它正在重构AIAgent的推理链 2026奇点智能技术大会(https://ml-summit.org) 传统AI Agent架构中,情感识别常被封装为后处理插件——输入文本/语音→调用独立模型→输出情绪标签→附加至响应元数据。这种松耦合设计正…...

边缘 AI 成智能制造核心引擎,微品致远荣膺2026年边缘计算企业20强

请点击上方蓝字关注我们!近日,由边缘计算领域长期观察者与生态建设者——边缘计算社区精心策划并发起的“2026中国边缘计算企业20强”榜单正式发布。微品致远凭借在边缘AI领域的卓越表现与深厚技术积淀,从众多强劲竞争对手中脱颖而出&#xf…...

AI编程革命:用Codex高效生成脚本

告别重复造轮子:Codex写脚本的技术文章大纲引言重复造轮子的定义及其在开发中的常见问题自动化工具如何帮助开发者提高效率Codex 的简介及其在脚本编写中的应用潜力Codex 的核心能力自然语言理解与代码生成支持多种编程语言(Python、JavaScript、Bash 等…...

宝塔面板+CentOS 7.X:新手小白的第一个前端网站部署全流程(含安全组配置避坑)

宝塔面板CentOS 7.X:零基础前端部署实战指南 第一次将前端项目部署到线上服务器,对很多转行前端或在校学生来说既兴奋又忐忑。兴奋的是终于能让自己的作品被更多人看到,忐忑的是面对陌生的服务器环境和复杂的配置流程。本文将带你用最直观的方…...

AIGlasses_for_navigation与Matlab联合仿真:机器人视觉导航算法验证环境搭建

AIGlasses_for_navigation与Matlab联合仿真:机器人视觉导航算法验证环境搭建 最近在折腾机器人导航算法,发现一个挺头疼的问题:算法写出来容易,但想验证它在真实世界里的表现,成本太高了。要么得买昂贵的硬件平台&…...

软技能训练营:说服力与谈判术——软件测试从业者的进阶指南

在软件测试领域,技术能力是立足之本,但软技能才是突破职业瓶颈的关键引擎。当测试人员从执行层迈向协作层,说服开发团队接受缺陷优先级、推动产品经理调整模糊需求、协调资源保障测试进度等场景,无不需要谈判策略与说服艺术的加持…...

智元远征A3完成全球首批客户交付

4月12日,智元机器人远征A3首批交付仪式在江苏启东市隆重举行。这是继万台量产下线后,智元在商业化落地进程中的又一标志性时刻。这款定位“为舞台而生的硅基明星”的全尺寸人形机器人,经极致打磨正式批量发往客户,标志着智元在全尺…...

PP-DocLayoutV3助力学术出版:LaTeX论文手稿的自动排版分析

PP-DocLayoutV3助力学术出版:LaTeX论文手稿的自动排版分析 每次看到那些排版精美、公式复杂的学术论文,你是不是也好奇过,这些文档里的结构信息——比如哪部分是标题、哪部分是公式、参考文献又在哪里——能不能被机器自动识别出来&#xff…...

机器学习工程师的日常:挑战与解决

在人工智能驱动的软件测试变革浪潮中,机器学习工程师已成为测试团队的核心驱动力。他们架起算法模型与测试实践的桥梁,直面数据、模型、工程化三大维度的挑战。本文将深入剖析其日常工作中的典型困境及系统性解决方案,为软件测试从业者提供可…...

亚洲美女-造相Z-Turbo效果可视化:同一提示词下不同采样步数与CFG Scale影响分析

亚洲美女-造相Z-Turbo效果可视化:同一提示词下不同采样步数与CFG Scale影响分析 想用AI生成一张好看的亚洲美女图片,是不是经常遇到这样的困惑:明明提示词写得挺详细,但出来的图要么模糊不清,要么表情僵硬&#xff0c…...

别再死记硬背PID公式了!用Arduino调一个温控风扇,手把手带你理解P、I、D到底在干啥

用Arduino实战PID温控:不背公式也能调出完美风扇 记得第一次接触PID控制时,盯着那三个神秘的字母——P、I、D,还有一堆让人头大的公式,感觉就像在解一道没有答案的数学题。直到我用Arduino做了一个温控风扇,亲眼看着风…...

模型剪枝方法全解

目录 写在前面 一、为什么需要剪枝:过参数化是个普遍现象 二、剪枝的基本流程 三、非结构化剪枝(Unstructured Pruning) 3.1 幅值剪枝(Magnitude Pruning) 3.2 非结构化剪枝的硬件问题 四、结构化剪枝&#xff…...

SPL06-001驱动开发实战:从硬件I2C到气压数据采集

1. SPL06-001气压传感器驱动开发入门 第一次接触SPL06-001气压传感器时,我被它的高精度和低功耗特性吸引。这款传感器不仅能测量气压,还能同步获取温度数据,非常适合无人机、气象站等嵌入式应用场景。但在实际开发中,我发现网上的…...

PyTorch 详解:动态计算图驱动的深度学习框架

文章目录引言:深度学习的“实验室与工厂”一、PyTorch 核心架构总览二、核心组件详解与设计哲学1. 张量:统一的数据基石2. 自动微分与动态计算图:框架的灵魂3. torch.nn 模块:神经网络的高层抽象4. 训练生态系统:优化与…...

MoveIt实战:从零构建ikfast逆运动学插件的完整指南与避坑手册

1. 为什么你需要ikfast逆运动学插件 在机械臂控制领域,逆运动学(Inverse Kinematics)计算就像是在解一道复杂的数学题——给定末端执行器的目标位置和姿态,求出各个关节应该转动的角度。传统的KDL(Kinematica and Dyna…...

详解c++中的sturct

在c中struct只能存放数据,在c中为其扩展了创建成员函数的功能,struct中的成员默认都是public的,struct的继承默认也是public,并且它是无法用于定义模板参数,这是它与class的主要区别。 虽然在c中struct可以定义成员函数…...

linux学习进展 僵死进程

在前一篇 fork 详解的笔记中,我们提到了一个关键问题——僵尸进程(僵死进程),它是 Linux 进程管理中最常见的“隐患”之一。很多初学者在使用 fork 创建子进程后,常会遇到“进程明明已经退出,却依然在进程列…...

MetaGPT:多智能体协作框架的工程实践

MetaGPT:多智能体协作框架的工程实践 各位开发者朋友们,大家好!我是架构师老杨,在技术圈摸爬滚打已经15年了——写过Java后端系统,搞过微服务架构,玩过云原生落地,最近两年更是扎进了AI Agent和…...

保姆级避坑指南:在Proxmox VE 8.4上给Windows 11虚拟机直通NVIDIA 2080 Ti显卡

保姆级避坑指南:在Proxmox VE 8.4上给Windows 11虚拟机直通NVIDIA 2080 Ti显卡 虚拟化技术正逐渐从企业级应用渗透到个人用户领域,尤其是对于需要高性能图形处理的场景。Proxmox VE作为一款开源的虚拟化平台,配合NVIDIA消费级显卡&#xff0c…...

JAVA OOP概念POJO、DTO、DAO、PO、BO、VO详解

在 Java 后端开发中,面对复杂的业务场景和团队协作,如果没有清晰的数据对象分层,代码很容易变成“意大利面”——数据库字段变更影响前端接口,敏感信息意外泄露,业务逻辑与数据访问混为一谈。 今天,我们结合…...

告别卡顿!用Android Studio Profiler揪出GPU性能瓶颈的保姆级实战

告别卡顿!用Android Studio Profiler揪出GPU性能瓶颈的保姆级实战 当你在测试最新开发的3D游戏时,突然发现角色转身时画面明显卡顿;或者电商App在快速滑动商品列表时,出现了令人不悦的白帧闪烁。作为中高级Android开发者&#xff…...

CANOE实战:基于SOME/IP的以太网通信仿真与配置详解

1. 认识SOME/IP与CANoe的基础组合 第一次接触汽车以太网通信时,我被SOME/IP这个协议名称吸引了注意力。它全称是Scalable service-Oriented MiddlewarE over IP,简单理解就是跑在以太网上的"服务型"通信协议。和传统CAN总线最大的不同在于&…...

PyTorch自定义损失超简单

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 PyTorch自定义损失函数:轻松实现的秘诀目录PyTorch自定义损失函数:轻松实现的秘诀 引言:打破…...

C++零基础到工程实战(4.2):while循环流程控制与条件表达式实战——使用system和cin实现支持ls的Shell

目录 一、本节学习内容概要图 二、前言 三、while 循环的基本逻辑与执行流程 3.1 while 的基本语法 3.2 while 和 for 的区别 四、while 中的 break、continue 与表达式条件 4.1 break:立即结束整个循环 4.2 continue:跳过本次,进入下…...

杭州专业WordPress模板开发服务商

模板号(mubanhao)是杭州地区知名的WordPress模板开发服务商,专注于为企业提供高品质的WordPress网站模板解决方案。作为长三角地区领先的网站建设服务提供商,模板号凭借多年的技术积累和行业深耕,已成为众多企业数字化转型道路上值得信赖的合…...

LightOnOCR-2-1B手把手教学:从零开始,打造你的智能文字提取工具

LightOnOCR-2-1B手把手教学:从零开始,打造你的智能文字提取工具 1. 为什么选择LightOnOCR-2-1B 在日常工作和学习中,我们经常需要从图片中提取文字内容。无论是扫描的文档、手机拍摄的笔记,还是网上下载的图片资料,手…...

Phi-4-mini-reasoning企业实操:金融风控规则推理引擎构建案例

Phi-4-mini-reasoning企业实操:金融风控规则推理引擎构建案例 1. 项目背景与模型介绍 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型,专为数学推理、逻辑推导和多步解题等强逻辑任务设计。该模型主打"小参数、强推理、长上下文、低延迟…...

DAMO-YOLO TinyNAS保姆级教学:EagleEye日志分析、错误排查与常见报错解决方案

DAMO-YOLO TinyNAS保姆级教学:EagleEye日志分析、错误排查与常见报错解决方案 你是不是刚部署好DAMO-YOLO TinyNAS的EagleEye项目,满心欢喜准备体验毫秒级目标检测,结果一运行就遇到各种报错,看着满屏的日志信息一头雾水&#xf…...