Oracle 復制表結構(含索引、主鍵)操作指南
1. 復制基礎表結構
-- 創建空表結構(不復制數據)
CREATE TABLE new_table AS
SELECT * FROM old_table
WHERE 1=0;
2. 復制主鍵約束
-- 查詢原表主鍵信息
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'OLD_TABLE'
AND constraint_name IN (SELECT constraint_nameFROM user_constraintsWHERE table_name = 'OLD_TABLE'AND constraint_type = 'P'
);-- 創建新主鍵(需替換實際約束名和列名)
ALTER TABLE new_table
ADD CONSTRAINT new_pk_constraint PRIMARY KEY (column1, column2);
3. 復制索引
-- 查詢原表索引信息
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. 復制其他約束(可選)
-- 檢查約束示例
ALTER TABLE new_table
ADD CONSTRAINT chk_salary CHECK (salary > 0);-- 唯一約束示例
ALTER TABLE new_table
ADD CONSTRAINT uniq_email UNIQUE (email);
注意事項
-
對象命名沖突:建議為新約束/索引添加前綴(如
new_pk_
) -
權限需求:需要
CREATE TABLE
和CREATE INDEX
權限 -
未包含對象:
-
不會自動復制外鍵約束
-
不包含觸發器、序列等對象
-
不復制表注釋和列注釋
-
-
數據存儲參數:默認使用當前用戶的表空間設置