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

相关推荐
Rainly200041 分钟前
工作日志之postgresql实现分布式锁
数据库·分布式·postgresql
爬山算法1 小时前
Hibernate(6) Hibernate支持哪些数据库?
java·数据库·hibernate
老华带你飞1 小时前
房屋租赁管理系统|基于java+ vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
AC赳赳老秦2 小时前
财务数据智能解读:DeepSeek分析利润表生成异常波动原因报告
数据库·人工智能·postgresql·zookeeper·测试用例·时序数据库·deepseek
Li_7695322 小时前
Redis进阶(二)—— Redis 事务
数据库·redis·缓存
少云清2 小时前
【接口测试】2_PyMySQL模块 _数据库操作步骤及事务
数据库·pymysql·代码实现
AI题库3 小时前
PostgreSQL 18 从新手到大师:实战指南 - 1.3 Docker环境搭建
数据库·docker·postgresql
少云清3 小时前
【接口测试】3_PyMySQL模块 _连接数据库
数据库·pymysql·代码实现
lkbhua莱克瓦243 小时前
基础-SQL-DML
开发语言·数据库·笔记·sql·mysql
herinspace3 小时前
管家婆网店ERP如何录入成本调价单
服务器·数据库·oracle·智能手机·电脑