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

SQL:如何从User表迁移数据至含默认值的tracking_user新表?

SQL脚本:创建tracking_user表并迁移User表数据

以下是实现需求的SQL脚本,针对主流数据库(MySQL、PostgreSQL)做了适配,你可根据实际使用的数据库选择:

1. 创建tracking_user表

先创建目标表,定义字段并设置custom的默认值:

MySQL版本

CREATE TABLE tracking_user (
    username VARCHAR(50) NOT NULL, -- 字段类型请根据原User表实际情况调整
    password VARCHAR(255) NOT NULL, -- 建议密码字段使用足够长度的VARCHAR
    custom INT DEFAULT 0,
    `time` DATETIME NOT NULL,
    PRIMARY KEY (username) -- 若原User表username是主键,这里也建议设置为主键
);

PostgreSQL版本

CREATE TABLE tracking_user (
    username VARCHAR(50) NOT NULL,
    password VARCHAR(255) NOT NULL,
    custom INT DEFAULT 0,
    "time" TIMESTAMP NOT NULL,
    PRIMARY KEY (username)
);

2. 从User表迁移数据

执行插入语句,将User表的username和password迁移过来,同时设置custom为0,time为脚本执行时的当前时间:

MySQL版本

INSERT INTO tracking_user (username, password, custom, `time`)
SELECT username, password, 0, NOW()
FROM User;

PostgreSQL版本

INSERT INTO tracking_user (username, password, custom, "time")
SELECT username, password, 0, CURRENT_TIMESTAMP
FROM "User"; -- PostgreSQL中表名如果是User(关键字),需要用双引号包裹

补充说明

  • 请根据原User表中username和password的实际字段类型调整脚本中的VARCHAR长度,确保数据兼容。
  • 如果User表中存在重复的username,插入时会报错,需要先处理原表的重复数据,或者调整tracking_user表的主键约束。
  • 若希望custom字段后续插入时默认值始终为0,插入时可省略该字段,直接使用表定义的默认值:
    -- 以MySQL为例,简化插入语句
    INSERT INTO tracking_user (username, password, `time`)
    SELECT username, password, NOW()
    FROM User;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:13:24