我有小写自动递增的问题。根据这个Auto Increment for 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;
答案 0 :(得分:0)
在Oracle数据库中,即使使用双引号,对象也不区分大小写(它们的名称)。根据Oracle文档:
您可以使用带引号或非带引号的标识符来命名任何数据库对象。但是,数据库名称,全局数据库名称和数据库链接名称始终不区分大小写,并以大写形式存储。如果您将此类名称指定为带引号的标识符,则会以静默方式忽略引号。
答案 1 :(得分:0)
编辑:尝试更准确地回答。
您需要在“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
因此,除非你真的需要区分案例,否则不要在对象命名中使用引号。