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

如何在SQL的INSERT-SELECT操作中替换Sys_Guid类型的Record ID

解决方案:复制数据时生成新的唯一Record ID

嘿,这事儿好办!你现在的需求是通过INSERT-SELECT把旧表数据复制到新表,同时替换掉原有的Sys_Guid类型的record_id,给每行生成全新的唯一值对吧?

核心思路很简单:不要在SELECT子句里引用旧表的record_id,而是调用数据库自带的Guid生成函数,让它为每一行自动生成新的唯一ID。

下面分不同数据库给你具体的SQL示例:

1. Oracle(你提到的Sys_Guid就是Oracle的函数)

直接把SELECT里的record_id换成SYS_GUID()就行,它会为每一行生成一个唯一的16字节Guid:

INSERT INTO TABLE_NEW (record_id, date_time, name, xml_record, meta_data)
SELECT 
    SYS_GUID(), -- 生成新的唯一Guid
    REPLACE(date_time,'12.02.18','12.03.18'), 
    name, 
    REPLACE(xml_record,'cats','dogs'), 
    REPLACE(meta_data,'human','alien') 
FROM TABLE_OLD;

2. 其他常见数据库的写法

如果你的数据库不是Oracle,也可以用对应的Guid生成函数:

SQL Server

用NEWID()(随机Guid)或者NEWSEQUENTIALID()(有序Guid,性能更优):

INSERT INTO TABLE_NEW (record_id, date_time, name, xml_record, meta_data)
SELECT 
    NEWID(), -- 替换成NEWSEQUENTIALID()也可以
    REPLACE(date_time,'12.02.18','12.03.18'), 
    name, 
    REPLACE(xml_record,'cats','dogs'), 
    REPLACE(meta_data,'human','alien') 
FROM TABLE_OLD;

MySQL

用UUID()生成标准的36字符Guid:

INSERT INTO TABLE_NEW (record_id, date_time, name, xml_record, meta_data)
SELECT 
    UUID(), 
    REPLACE(date_time,'12.02.18','12.03.18'), 
    name, 
    REPLACE(xml_record,'cats','dogs'), 
    REPLACE(meta_data,'human','alien') 
FROM TABLE_OLD;

PostgreSQL

需要先确保uuid-ossp扩展已安装,然后用gen_random_uuid():

-- 先安装扩展(如果还没装的话)
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

INSERT INTO TABLE_NEW (record_id, date_time, name, xml_record, meta_data)
SELECT 
    gen_random_uuid(), 
    REPLACE(date_time,'12.02.18','12.03.18'), 
    name, 
    REPLACE(xml_record,'cats','dogs'), 
    REPLACE(meta_data,'human','alien') 
FROM TABLE_OLD;

注意事项

  • 确保TABLE_NEW的record_id字段类型和生成的Guid类型匹配:比如Oracle用RAW(16),SQL Server用UNIQUEIDENTIFIER,MySQL用CHAR(36),PostgreSQL用UUID。
  • 如果TABLE_NEW的record_id已经设置了默认值为对应的Guid生成函数,你甚至可以不用在INSERT语句里指定这个字段,不过显式写出来会更清晰,避免后续混淆。

内容的提问来源于stack exchange,提问作者m.weiloa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:26:43