Oracle 复制表结构(含索引、主键)操作指南

Oracle 复制表结构(含索引、主键)操作指南

1. 复制基础表结构

sql 复制代码
-- 创建空表结构(不复制数据)
CREATE TABLE new_table AS 
SELECT * FROM old_table 
WHERE 1=0;

2. 复制主键约束

sql 复制代码
-- 查询原表主键信息
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'OLD_TABLE'
AND constraint_name IN (
    SELECT constraint_name
    FROM user_constraints
    WHERE table_name = 'OLD_TABLE'
    AND constraint_type = 'P'
);

-- 创建新主键(需替换实际约束名和列名)
ALTER TABLE new_table 
ADD CONSTRAINT new_pk_constraint PRIMARY KEY (column1, column2);

3. 复制索引

sql 复制代码
-- 查询原表索引信息
SELECT index_name, column_name, index_type, uniqueness
FROM user_ind_columns
JOIN user_indexes USING (index_name)
WHERE table_name = 'OLD_TABLE';

-- 创建新索引(示例)
CREATE INDEX new_idx_name ON new_table (column_name);
CREATE UNIQUE INDEX new_uniq_idx ON new_table (column1, column2);

4. 复制其他约束(可选)

sql 复制代码
-- 检查约束示例
ALTER TABLE new_table 
ADD CONSTRAINT chk_salary CHECK (salary > 0);

-- 唯一约束示例
ALTER TABLE new_table 
ADD CONSTRAINT uniq_email UNIQUE (email);

注意事项

  1. 对象命名冲突:建议为新约束/索引添加前缀(如 new_pk_

  2. 权限需求:需要 CREATE TABLE CREATE INDEX 权限

  3. 未包含对象:

    • 不会自动复制外键约束

    • 不包含触发器、序列等对象

    • 不复制表注释和列注释

  4. 数据存储参数:默认使用当前用户的表空间设置

相关推荐
crossoverJie25 分钟前
StarRocks 如何在本地搭建存算分离集群
数据库·后端
潇凝子潇35 分钟前
如何在不停机的情况下,将MySQL单库的数据迁移到分库分表的架构上?
数据库·mysql·架构
ApeAssistant1 小时前
2025,Python连Oracle最新教程
python·oracle
Tapdata1 小时前
什么是 Operational Data Hub?它因何而生,又为何能够在当下成为技术共识?
数据库
这里有鱼汤1 小时前
普通人做量化,数据库该怎么选?
数据库·后端
BOOM朝朝朝2 小时前
Mongo索引
数据库·后端
许野平3 小时前
Rust:如何访问 *.ini 配置文件?
开发语言·数据库·rust·ini·configparser
程序终结者4 小时前
超越边界:MongoDB 16MB 文档限制的 pragmatic 解决方案
数据库·mongodb
正在走向自律4 小时前
SelectDB数据库,新一代实时数据仓库的全面解析与应用
数据库·数据仓库·实时数据仓库·selectdb·云原生存算分离·x2doris 迁移工具·mysql 协议兼容
昵称是6硬币4 小时前
MongoDB系列教程-第四章:MongoDB Compass可视化和管理MongoDB数据库
数据库·mongodb