【问题标题】:Auto increment in Oracle SQLOracle SQL 中的自动增量
【发布时间】:2015-12-30 21:13:48
【问题描述】:

我正在尝试在 Oracle SQL 中创建一个具有自动增量功能的表。我有以下 SQL 代码:

DROP TABLE "Account" CASCADE CONSTRAINTS;
CREATE TABLE "Account" (
  "Id" NUMBER(5) NOT NULL,
  "Name" VARCHAR2(32) NOT NULL,
  "User" VARCHAR2(16) NOT NULL,
  "Email" VARCHAR2(32) NOT NULL,
  "Password" VARCHAR2(16) NOT NULL,
  "Level" VARCHAR2(16) NOT NULL,
  CONSTRAINT "Account_pk" PRIMARY KEY ("Id")
);

DROP SEQUENCE "Account_seq";
CREATE SEQUENCE "Account_seq" START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 10000;

INSERT INTO "Account" VALUES (Account_seq.NEXTVAL, 'xxx', 'xxx', 'xxx', 'xxx', 'user');
INSERT INTO "Account" VALUES (Account_seq.NEXTVAL, 'xxx', 'xxx', 'xxx', 'xxx', 'user');

Oracle SQL Developer 说 Account_seq 已创建,但它仍然给我一个错误:“序列不存在”...

【问题讨论】:

  • 如果是关于oracle的,你为什么要标记这个sql server。
  • Stackoverflow 建议!
  • 它建议它作为一个以字母 sql 开头的标签?
  • 我建议你也用明确的列名编写你的insert 语句,这样你就可以知道哪个值映射到哪个列。

标签: sql oracle oracle11g


【解决方案1】:

如果你使用双引号来创建一个对象(并且对象名称不是全部大写),那么你必须在你引用它的任何地方都使用双引号。

所以在这种情况下,这会起作用(注意Account_seq 周围的双引号):

INSERT INTO "Account" VALUES ("Account_seq".NEXTVAL, 'xxx', 'xxx', 'xxx', 'xxx', 'user');

也就是说,到处使用双引号很烦人。相反,请考虑更改序列创建以避免使用双引号:

CREATE SEQUENCE Account_seq ...

...这样,你可以不带双引号引用它,并且序列名称不会区分大小写。

编辑

稍微澄清一下区分大小写的部分:

当您对标识符进行双引号时,Oracle 会查找具有精确大小写的标识符。

另一方面,如果你不使用双引号,它会寻找全部大写的等效标识符。

例子:

  • "Account_seq":它会寻找Account_seq
  • "AcCoUnT_SeQ":它会寻找AcCoUnT_SeQ
  • Account_seq:它将寻找ACCOUNT_SEQ
  • AcCoUnT_SeQ:它会寻找ACCOUNT_SEQ

【讨论】:

  • 是的。在我看来,通常没有充分的理由来引用这样的字符串。
  • 区分大小写不是问题,因为大小写相同。
  • @GordonLinoff - 你确定是这样吗?
  • @Hogan。 . .我正在阅读问题,"Account_seq"Account_seq 与我阅读的情况相同。
【解决方案2】:

如果您使用带引号的标识符命名架构对象,则在引用该对象时必须使用双引号。所以你的插入语句应该是:

INSERT INTO "Account" VALUES ("Account_seq".NEXTVAL, 'xxx', 'xxx', 'xxx', 'xxx', 'user');
INSERT INTO "Account" VALUES ("Account_seq".NEXTVAL, 'xxx', 'xxx', 'xxx', 'xxx', 'user');

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2011-09-07
    • 2014-05-08
    • 1970-01-01
    • 2022-11-30
    • 2021-08-22
    • 2014-02-21
    • 2011-09-01
    • 2019-04-19
    相关资源
    最近更新 更多