在本教學中,您將學習如何使用Oracle RENAME
語句重命名資料庫中的表。
要重命名表,可以使用以下Oracle RENAME
表語句,如下所示:
RENAME table_name TO new_name;
在RENAME
表語句中:
- 首先,指定將要重命名的表名稱。
- 其次,指定新的表名。新名稱不能與同一模式中的另一個表相同。
請注意,一旦執行了
RENAME
語句,就不能回滾了。
當重命名表時,Oracle自動將舊表上的索引,約束和授權轉移到新表上。 另外,它使依賴重命名表(原表)的所有對象失效,如視圖,存儲過程,函數和同義詞。
Oracle RENAME表的例子
我們來創建一個名為promotions
表,用來作演示。
CREATE TABLE promotions(
promotion_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
promotion_name varchar2(255),
start_date DATE NOT NULL,
end_date DATE NOT NULL,
PRIMARY KEY(promotion_id),
CHECK (end_date > start_date)
);
以下PL/SQL
函數通過查詢promotions
表中的數據來返回促銷的數量:
CREATE OR REPLACE FUNCTION count_promotions
RETURN NUMBER
IS
v_count NUMBER;
BEGIN
SELECT
COUNT( * )
INTO
v_count
FROM
promotions;
RETURN v_count;
END;
要將promotions
表重命名為campaigns
表,可以使用以下語句:
RENAME promotions TO campaigns;
如上面所述,Oracle將promotions
表中的所有索引,約束和授權轉移到campaigns
表中。 以下語句顯示了從promotions
表傳輸的新campaigns
表的限制條件:
SELECT
OBJECT_TYPE,OBJECT_NAME,status
FROM
all_objects
WHERE
status = 'INVALID' and OWNER='OT' ;
因為COUNT_PROMOTIONS
函數引用了promotions
表,所以當重命名promotions
表時,COUNT_PROMOTIONS
函數變得無效。
要查找當前模式中的無效對象,可以從all_objects
視圖中查詢數據,如下所示:
SELECT
owner,
object_type,
object_name
FROM
all_objects
WHERE
status = 'INVALID'
ORDER BY
object_type,
object_name;
執行上面查詢語句,得到以下結果 -
如上查詢結果所示,該語句返回COUNT_PROMOTIONS
函數作為無效的對象。
在本教學中,您已學習如何使用Oracle RENAME
表語句重命名資料庫中的表。
上一篇:
Oracle截斷表
下一篇:
Oracle Number類型