当前位置: 首页 > 面试题库 >

Oracle:如何创建一个身份列?[复制]

印瑾瑜
2023-03-14
问题内容

直到11g版本(包括11g)为止,Oracle中似乎都没有AUTO_INCREMENT的概念。

如何在Oracle 11g中创建行为类似于自动增量的列?


问题答案:

从Oracle 11g开始,Oracle中 没有诸如“ auto_increment”或“
identity”列之类的东西。但是,您可以使用序列和触发器轻松对其进行建模:

表定义:

CREATE TABLE departments (
  ID           NUMBER(10)    NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));

CREATE SEQUENCE dept_seq START WITH 1;

触发定义:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/

更新:

IDENTITY
列现在在Oracle 12c上可用:

create table t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
    );

或指定起始值和增量值,还防止任何插入到标识列(GENERATED ALWAYS)中(同样,仅适用于Oracle 12c +)

create table t1 (
    c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
    c2 VARCHAR2(10)
    );

另外,Oracle 12还允许使用序列作为默认值:

CREATE SEQUENCE dept_seq START WITH 1;

CREATE TABLE departments (
  ID           NUMBER(10)    DEFAULT dept_seq.nextval NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));


 类似资料:
  • 问题内容: 在我的Java EE6 REST服务上,我想使用身份验证令牌从移动设备登录,用户将发送其用户名,密码,服务器将发回令牌,该令牌将用于授权用户对给定的进一步请求时间。 我可以这样简单地自己创建令牌吗?(我想我不需要加密此令牌,因为我将使用HTTPS。) 还是有一种更标准的方式来创建我的令牌?也许它存在于API之一 问题答案: 您有效地提出的方案允许客户端无限制地访问您的服务。初始登录后,

  • 我做了多次授权,但我有最终代码的问题。我有这样的代码 它将为用户表生成基本的登录/注册路由、视图和控制器。 为了简单起见,将管理表作为用户表。 管理员应用的控制器/Http/Controllers/AdminAuth/AuthController-app/Http/Controllers/AdminAuth/PasswordController(注意:我刚刚从app/Http/Controller

  • 我想创建一个有2列的循环布局。应该有一个变量有2列them.Clicking它们应该会显示祝酒词

  • 我试图在SailPoint中设置身份的价值,同时创建身份作为聚合的一部分。有人能帮我确定身份规则应该是什么样子吗? setAttribute不起作用。

  • 我正在做一个angularfire项目,我想知道如何在Firebase3中创建一个用户,一旦完成,就不要对指定的用户进行身份验证。在以前的Firebase版本中,我们有一个名为createUser(电子邮件,密码)的方法。现在我们只有createUserWithEmailAndPassword(email,password)方法,它创建并验证指定的用户。

  • 使用使用corda-webserver的webapp,如何实现用户的身份验证机制? 配置文件中提到的RPC用户。 并执行基于角色的操作(仅限可访问的流)。 我只能找到有关通过ClientRPCOps对RPC用户进行身份验证的详细信息,但找不到任何关于基于web的身份验证的信息。