oracle 表名 雙引號 刪除
後來仔細檢視發現是在create的時候,表名和欄位名都被加上了雙引號,那建錯了就重建吧,發現刪除又刪除不了,上網查了下,用這種方法成功刪除了,記錄下來:
最近在用Powerdesigner生成oracle資料庫sql語句時,發現表和欄位名中都帶有引號。例如: create table "authorISBN" (
"authorID" INTEGER not null,
"tit_isbn" VARCHAR2(20),
"aut_authorID" INTEGER,
"isbn" VARCHAR2(20),
constraint PK_AUTHORISBN primary key ("authorID")
); 如果這樣生成表的話,那麼你查詢或者插入資料都會顯示table or view does not exist(表或檢視不存在),然後讓你鬱悶的事情來了,這些表中oracle資料庫中是存在的(我是建立在scott使用者中的),但是你去刪除這些表 (drop table 表名,或者drop table "表名")都是無法刪除的,經過自己查詢資料和研究發現,說明scott使用者的許可權不夠。解決的方法是:你先連線到system使用者下,使用命 令 grant select any table to scott;(這句命令的意思是,授權給scott使用者選擇任何的表),這樣你在連線到scott使用者下,發現可以查詢出這張表(select * from "表名") 但是表名上要加引號。刪除這張表(drop table "表名") 表名上同樣要加引號。 那麼為什麼用PowerDesigner生成的oracle資料庫sql語句的表名和欄位名上會出現引號呢? 因為,Oracle建立表的一條規則為:
在命名錶的時候可以使用大寫或小寫字母。只要表名或欄位名沒有用雙引號括住,Oracle 對大小寫就不敏感。Oracle 支援使用雙引號的語法。但是,最好不要直接使用雙引號。 那麼怎麼讓這些引號不出現呢? 在PowerDesiger中,在physical data model 中找到選單中的Database下的Edit current DBMS中, 選擇Script->Sql->Format,有一項CaseSensitivityUsingQuote,它的comment為 “Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否適用雙引號來規定識別符號的大小寫,可以看到右邊的values預設值為“YES”,改為“No”,點選【應用】按鈕。 這樣再生成sql語句時,表和欄位名上是沒有引號了。
轉自:http://hi.baidu.com/chenkuntian/blog/item/e380b4cca2452b5df31fe740.html