在本教學中,您將學習如何使用Oracle RENAME
語句重新命名資料庫中的表。
要重新命名表,可以使用以下Oracle RENAME
表語句,如下所示:
RENAME table_name TO new_name;
在RENAME
表語句中:
請注意,一旦執行了
RENAME
語句,就不能回滾了。
當重新命名表時,Oracle自動將舊錶上的索引,約束和授權轉移到新錶上。 另外,它使依賴重新命名表(原表)的所有物件失效,如檢視,儲存過程,函式和同義詞。
我們來建立一個名為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
表語句重新命名資料庫中的表。