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. 数据存储参数:默认使用当前用户的表空间设置

相关推荐
倔强的石头_2 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence2 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神3 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据3 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡3 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧3 天前
Oracle EXPLAIN PLAN
数据库·oracle
BD_Marathon3 天前
SQL学习指南——视图
数据库·sql
活宝小娜3 天前
mysql详细安装教程
数据库·mysql·adb