簡體   English   中英

Oracle 11g R2 Express,小寫自動遞增

[英]Oracle 11g R2 Express, Auto Increment in lowercase

我對小寫的自動遞增有疑問。 基於這個針對Oracle的自動增量問題,我能夠創建自動增量,但表仍為大寫字符。

我如何實際使用小寫字母呢?

這是我的SQL清單:

CREATE TABLE  "myTable" 
   (    "tableID" NUMBER(*,0) primary key, 
        "tableColumn" VARCHAR2(30) 
   ) ;

CREATE SEQUENCE "tableID_SEQUENCE"
START WITH 1
INCREMENT BY 1;

CREATE OR REPLACE TRIGGER "tableID_TRIGGER"
BEFORE INSERT ON "myTable"
FOR EACH ROW
BEGIN
SELECT tableID_SEQUENCE.nextval INTO NEW.tableID FROM dual; //at this line, what changes needed to?
END;

INSERT INTO "myTable" ("tableColumn") VALUES ('ABC');

所以目前我被觸發器查詢卡住了:

SELECT tableID_SEQUENCE.nextval INTO NEW.tableID FROM dual; 

在Oracle數據庫中,即使使用雙引號,對象也不區分大小寫(它們的名稱)。 根據Oracle文檔:

您可以使用帶引號或不帶引號的標識符來命名任何數據庫對象。 但是,數據庫名稱,全局數據庫名稱和數據庫鏈接名稱始終不區分大小寫,並以大寫形式存儲。 如果將此類名稱指定為帶引號的標識符,則引號將被忽略。

編輯:試圖更精確地回答。

您需要在“ NEW”變量前面加上一個冒號,並在引號中引用對象名稱(因為您使用了引號):

CREATE OR REPLACE TRIGGER "tableID_TRIGGER"
   BEFORE INSERT
   ON "myTable"
   FOR EACH ROW
BEGIN
   SELECT "tableID_SEQUENCE".NEXTVAL INTO :NEW."tableID" FROM DUAL;
END;
/

您需要使用-引號引用所有引用的名稱!:

"tableID" <> tableID
"tableID" <> TABLEID
"tableID" <> tableid
"tableID" = "tableID"
 tableID  =  tableID
 tableID  =  TABLEID
 tableID  =  tableid

因此,除非您確實需要區分大小寫,否則不要在對象命名中使用引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM