You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex:基于ORDERS表更新CUSTOMERS表的业务需求实现

基于ORDERS表同步CUSTOMERS表的解决方案

前置条件

首先需要为CUSTOMERS表的EMAIL字段创建唯一约束(或唯一索引),确保能高效判断邮箱是否重复:

-- 适用于MySQL、PostgreSQL等主流数据库
ALTER TABLE CUSTOMERS ADD CONSTRAINT uc_customers_email UNIQUE (EMAIL);

分数据库实现代码

MySQL 版本

利用INSERT ... ON DUPLICATE KEY UPDATE语法实现"存在则更新、不存在则插入"的逻辑:

INSERT INTO CUSTOMERS (FIRST_NAME, LAST_NAME, EMAIL, NUMBER_OF_ORDERS)
SELECT o.FIRST_NAME, o.LAST_NAME, o.EMAIL, 1
FROM ORDERS o
ON DUPLICATE KEY UPDATE
  NUMBER_OF_ORDERS = NUMBER_OF_ORDERS + 1;

PostgreSQL 版本

使用INSERT ... ON CONFLICT ... DO UPDATE语法实现相同逻辑:

INSERT INTO CUSTOMERS (FIRST_NAME, LAST_NAME, EMAIL, NUMBER_OF_ORDERS)
SELECT o.FIRST_NAME, o.LAST_NAME, o.EMAIL, 1
FROM ORDERS o
ON CONFLICT (EMAIL) DO UPDATE SET
  NUMBER_OF_ORDERS = CUSTOMERS.NUMBER_OF_ORDERS + 1;

逻辑说明

  • 从ORDERS表提取待同步的客户姓名、邮箱数据,将初始订单数设为1
  • 若CUSTOMERS表中已存在对应邮箱的记录,自动触发更新:将该记录的NUMBER_OF_ORDERS字段值加1
  • 若CUSTOMERS表中无对应邮箱的记录,直接插入新行,NUMBER_OF_ORDERS默认赋值为1

内容的提问来源于stack exchange,提问作者ckp7blessed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:37:16