11
在Oracle中,我創建一個表是這樣的:如何重命名Oracle中的主鍵,以便它可以重複使用
CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "PK_Mig1" PRIMARY KEY ( "Id" ) )
於是,我重新命名PK:
ALTER TABLE "Mig1" RENAME CONSTRAINT "PK_Mig1" TO "PK_XXX"
然後,我重命名該表:
ALTER TABLE "Mig1" RENAME TO "XXX"
然後,我嘗試創建另一個表,使用以前更名錶的名稱:
CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "PK_Mig1" PRIMARY KEY ( "Id" ) )
此時我得到:An error occurred: ORA-00955: name is already used by an existing object
。這是因爲不知何故,第一個表的主鍵仍然以某種方式存在,雖然它被重命名。如果我嘗試創建這樣的第二個表格:
CREATE TABLE "Mig1"( "Id" INTEGER NOT NULL , CONSTRAINT "YYY" PRIMARY KEY ( "Id" ) )
它的工作原理。那麼,如何正確地將主鍵與其所有關聯資源重新命名,以便其名稱可以重複使用?
工程就像一個魅力。對不起,我不知道Oracle除了約束(來自SQL Server世界)之外還維護着一個額外的索引。 – Dejan 2011-06-06 13:46:03
Oracle在所有情況下創建(或劫持)索引以維護主鍵和唯一性約束。否則,你還能怎麼做? – 2011-06-07 00:55:29