2016-03-15 82 views
0

我想重命名Oracle SQL數據庫中的序列(我們稱之爲OLD_SEQUENCE)。每RENAME文檔,我可以使用該命令重命名序列:重命名在Oracle SQL中找不到序列SQL

Use the RENAME statement to rename a table, view, sequence, or private synonym.

因此,使用本文檔中,我試圖創建下面的命令:

RENAME old_sequence TO new_sequence 

但不幸的是,這將產生以下SQL錯誤:

Error executing SQL RENAME old_sequence TO new_sequence: 
ORA-04043: object old_sequence does not exist 

我確認這是究竟是如何順序出現在數據庫中,所以我嘗試添加所有者

RENAME owner.old_sequence TO new_sequence 

,但沒有工作,要麼

Error executing SQL RENAME owner.old_sequence TO new_sequence: 
ORA-01765: specifying owner's name of the table is not allowed 

我覺得很奇怪,這裏的錯誤是,他們認爲這是一個表,而不是一個序列。

我得到相同的結果時,我申請的所有者名都:

RENAME owner.old_sequence TO owner.new_sequence 

所以,我怎麼能解決這個問題,即重命名找不到的Oracle SQL序列?

+3

你是序列的所有者嗎?你可以顯示查詢'user_sequences'來顯示序列名稱的結果嗎?是否有可能將舊序列創建爲區分大小寫的標識符,並且您的'rename'命令中沒有使用區分大小寫的標識符? –

+0

@JustinCave我不是原始的所有者,但通過'GRANT'命令授予訪問權限。對於它的價值,我可以在這個擁有者下創建新的序列和ALTER現有的序列。我的重命名使用了表名稱的精確複製粘貼,因此區分大小寫應該沒有關係。 – Thunderforge

+0

@Thunderforge你從哪裏複製序列名?什麼'從下列(sequence_name)='old_sequence';'給出你的all_sequences select sequence_name?如果不是全部都是大寫的,那麼當你使用它時,你將需要用雙引號括住你的名字,例如。 ''將old_sequence重命名爲...' – Boneist

回答

2

從您鏈接到文件:

Prerequisites

The object must be in your own schema.

讓你允許進入該地區的事實是無關緊要的。如果你不擁有它,你不能重命名它。

0

您是否試圖與specifing個新主人甚至它同樣重命名:

RENAME owner.old_sequence TO new_owner.new_sequence

BTW是很正常的拿到它只是一個信息問題的響應詞「表」。

+0

我曾嘗試將其添加到兩者(所有者是相同的)。我在這個問題上加了這個。 – Thunderforge