[英]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.