精华内容
下载资源
问答
  • oracle设置主键自动增长 首先,你要有一张表! 然后,你需要一个自定义的sequence  以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle...
  • Oracle数据库创建表tuser设置主键自动增长,先创建表,然后创建基于该表的队列。
  • 到此这篇关于Navicat Premium中Oracle创建主键自增的方法的文章就介绍到这了,更多相关Navicat Premium主键自增内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
  • Oracle数据库设置主键增长详情

    千次阅读 2018-10-24 22:25:25
    1.创建一张操作表 代码创建过程: create table USERTEST ( id NUMBER not null, name VARCHAR2(50), sex VARCHAR2(10) ) alter table USERTEST add constraint 主键 primary key (ID) using index tablespace USERS...

    1.创建一张操作表

    代码创建过程:

    create table USERTEST
    (
      id   NUMBER not null,
      name VARCHAR2(50),
      sex  VARCHAR2(10)
    )
    
    alter table USERTEST
      add constraint 主键 primary key (ID)
      using index 
      tablespace USERS
      pctfree 10
      initrans 2
      maxtrans 255
      storage
      (
        initial 64K
        next 1M
        minextents 1
        maxextents unlimited
      );
    
    

    小熙使用的是:工具PLSQL创建的表(推荐)

    plsq创建表

    2. 设置序列

    代码过程(创建简易默认序列):

    CREATE SEQUENCE sequenceName;   --第三个单词(sequenceName)是序列名称,按需求起名
    

    工具PLSQL创建序列
    创建序列化

    序列化的创建一般默认,只创建名称就好。如有其它需求可再设置,选择看个人喜好。

    3. 设置触发器

    代码过程(注意zizeng是我设置的触发器名称,zhujian是我序列化名称):

    create or replace trigger zizeng
      before insert
      on USERTEST 
      for each row
    declare
      -- local variables here
    begin
      SELECT zhujian.nextval INTO :new.id FROM dual;
    END zizeng;
    

    工具PLSQL创建触发器

    1. 找到触发器(在编辑表里面)
      找到触发器

    点击加号,抒写完触发器名称和触发事件之后,工具会自动生成,对于这张表而言添加触发器的通用代码。

    在这里插入图片描述

    begin和end中间添加序列的代码需要我们自己写:

    SELECT zhujian.nextval INTO :new.id FROM dual;
    

    其实这行代码只有序列名(zhujian)不是固定的,其他都是固定抒写格式。
    至此自增配置完了,可以添加一条数据测试下:

    INSERT INTO usertest(NAME,sex) VALUES('程熙','男');
    

    本次分享至此结束了,如果还有更好的方法或需求可以留言哟。

    展开全文
  • 1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:create table customers(id int auto_increment primary key not null, name varchar...

    1、把主键定义为自动增长标识符类型

    MySql

    在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:

    create table customers(id int auto_increment primary key not null, name varchar(15));

    insert into customers(name) values("name1"),("name2");

    select id from customers;

    以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值。最后查询表中id字段,查询结果为:

    c8ccb2bedb20cf7ce4f163ea47b8a6a6.png

    由此可见,一旦把id设为auto_increment类型,mysql数据库会自动按递增的方式为主键赋值。

    Sql Server

    在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:

    create table customers(id int identity(1,1) primary key not null, name varchar(15));

    insert into customers(name) values('name1'),('name2');

    select id from customers;

    注意:在sqlserver中字符串用单引号扩起来,而在mysql中可以使用双引号。

    查询结果和mysql的一样。

    3ac55a27b865afdcca5bd9b888e2fd8f.png

    由此可见,一旦把id设为identity类型,MS SQLServer数据库会自动按递增的方式为主键赋值。identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。

    以前经常会碰到这样的问题,当我们删除了一条自增长列为1的记录以后,再次插入的记录自增长列是2了。我们想在插入一条自增长列为1的记录是做不到 的。今天跟同事讨论的时候发现可以通过设置SET IDENTITY_INSERT ON;来取消自增长,等我们插入完数据以后在关闭这个功能。实验如下:

    use TESTDB2

    --step1:创建表

    create table customers(

    id int identity primary key not null,

    name varchar(15)

    );

    --step2:执行插入操作

    insert into customers(id,name) values(1,'name1');

    --报错:An explicit value for the identity column in table 'customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.

    --step3:放开主键列的自增长

    SET IDENTITY_INSERT customers ON;

    --step4:插入两条记录,主键分别为1和3。插入成功

    insert into customers(id,name) values(1,'name1');

    insert into customers(id,name) values(3,'name1');

    --step5:再次插入一个主键为2的记录。插入成功

    insert into customers(id,name) values(2,'name1');

    --step6:插入重复主键,

    --报错:Violation of PRIMARY KEY constraint 'PK__customer__3213E83F00551192'. Cannot insert duplicate key in object 'dbo.customers'.

    insert into customers(id,name) values(3,'name1');

    --step7:关闭IDENTITY_INSERT

    SET IDENTITY_INSERT customers OFF;

    2、从序列中获取自动增长的标识符

    Oracle

    在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。

    create sequence customer_id_seq increment by 2 start with 1

    一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。

    curval:返回序列的当前值

    nextval:先增加序列的值,然后返回序列值

    以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq序列。最后查询customers表中的id字段。

    create table customers(id int primary key not null, name varchar(15));

    insert into customers values(customer_id_seq.nextval, 'name1');

    insert into customers values(customer_id_seq.nextval, 'name2');

    select id from customers;

    如果在oracle中执行以上语句,查询结果为:

    3cc133ab77438984b0fe459806d17d09.png

    通过触发器自动添加id字段

    从上述插入语句可以发现,如果每次都要插入customer_id_seq.nextval的值会非常累赘与麻烦,因此可以考虑使用触发器来完成这一步工作。

    创建触发器trg_customers

    create or replace

    trigger trg_customers before insert on customers for each row

    begin

    select CUSTOMER_ID_SEQ.nextval into :new.id from dual;

    end;

    插入一条记录

    insert into customers(name) values('test');

    这是我们会发现这一条记录被插入到数据库中,并且id还是自增长的。

    9e1cab5b823447ba107389424dbbd6f5.png

    展开全文
  • oracle设置主外键即主键序列自动增长
  • Oracle数据库设置主键增长策略

    千次阅读 2019-04-23 16:53:15
    其次为我们SOFTCLASS表的ID添加主键增长策略: CREATE SEQUENCE SOFTCLASS_sequence INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 10; 测试结果: INSERT INTO SOFTCLASS VALUES  ( SOFTCLASS_sequence....

    首先使用建表语句创建一个SOFTCLASS表:

    CREATE TABLE "SCOTT"."SOFTCLASS" (
      "ID" NUMBER NOT NULL ,
      "NAME" VARCHAR2(255 BYTE) ,
      "AGE" NUMBER ,
      "SEX" VARCHAR2(255 BYTE) ,
      "TEL" VARCHAR2(255 BYTE) ,
      "MAIL_ACCOUNT" VARCHAR2(255 BYTE) ,
      "ADDRESS" VARCHAR2(255 BYTE) 
    )
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('2', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('3', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('4', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('5', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('6', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('7', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('8', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    INSERT INTO "SCOTT"."SOFTCLASS"("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS") VALUES ('9', '测试', '18', '男', '15755332548', '110@163.com', '安徽阜阳');
    

    其次为我们SOFTCLASS表的ID添加主键自增长策略:

    CREATE SEQUENCE SOFTCLASS_sequence 
    INCREMENT BY 1
    NOMAXVALUE
    NOCYCLE
    CACHE 10;

    测试结果:
    INSERT INTO SOFTCLASS
    VALUES
        ( SOFTCLASS_sequence.nextval, '测试数据', '18', '男', '15755332548', '110@163.com', '安徽阜阳' );
    图片
    到此则数据插入成功!

    另外在Mybatis中插入数据时可以使用如下方式:

      <insert id="addStudent"  parameterType="com.ssm.pojo.SoftStudent">
            <selectKey keyProperty="ID" resultType="int" order="BEFORE">
                select SOFTCLASS_sequences.nextval from dual
            </selectKey>
            INSERT INTO SOFTCLASS("ID", "NAME", "AGE", "SEX", "TEL", "MAIL_ACCOUNT", "ADDRESS")
            VALUES (#{ID} ,#{NAME}, #{AGE}, #{SEX}, #{TEL}, #{MAIL_ACCOUNT}, #{ADDRESS})
        </insert>


     

    展开全文
  • oracle 数据库没有像 MYSQL一样有 自动ID增值 的功能,如要实现可以用触发器。首先就是建立一个序列,序列有有自动增值的功能,再建立一个触发器。如:建立一个序列CREATE SEQUENCE auto_seqminvalue 1 -- 最小值...

    oracle 数据库没有像 MYSQL一样有 自动ID增值 的功能,如要实现可以用触发器。

    首先就是建立一个序列,序列有有自动增值的功能,再建立一个触发器。

    如:

    建立一个序列

    CREATE SEQUENCE auto_seq

    minvalue 1 -- 最小值

    increment by 1 -- 每次增加值数

    nocache -- 不启用缓存

    nocycle -- 不循环;

    建立一个触发器

    CREATE OR REPLACE trigger auto_id_tri

    before insert on pjsh_person -- before 表示插入新数据时执行

    for each row -- 每次插入数据到pjsh_person表时执行下面的oracle 语句

    begin

    select auto_seq.nextval into :NEW.ID from dual;

    end;

    auto_id_tri 触发器名

    auto_seq.nextval 提取auto_seq 序列的值

    :NEW.ID  ID为要添加的主键列名

    pjsh_person 要添加自动ID值的表名。

    展开全文
  • 两种方法可以设置主键: 自增长主键 唯一序列 一 自增主键 方法一:通过序列以及触发器实现主键增长 适用于直接使用JDBC连接数据库,这种方式将主键增长的任务完全交给数据库,无需在代码层面上进行任何...
  • orcale设置主键自动增长 随笔记得笔记 以后用到 直接到这里copycreate or replace table TBL_SYS_USER(user_id NUMBER(19) not null,user_name VARCHAR2(60 CHAR),user_pwd VARCHAR2(60 CHAR))alter t...
  • 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动主键赋值。例如:CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,NAME VARCHAR(15),age INT,email VARCHAR(50),gender ...
  • oracle主键自动增长

    2012-04-26 08:41:45
    oracle数据库中主键属性没有自增长,所以只能自己写程序来实现,用序列与触发器,可以解决这个 问题
  • 因为Oracle中12c版本之前的都不能直接给主键设置增长,所以只能通过序列+触发器来实现自增长。大致过程:创建序列->创建触发器,并设置在某张表执行insert操作之前触发(让主键自增1【注意只能作用于为int类型的...
  • Oracle 设置主键增长

    2021-05-08 02:59:59
    SharePoint 2013 Create ...工具未检测合法域名 这个我就不多说了,如果你新建的时候没有填写AppID的话这个我就不太清楚了 如果新建项目的时候填写了AppID的话,出现这种错误,那你应该去小程序后台 设置->开发者设置 ...
  • cache里面的取完后,oracle自动再取一组到cache。使用cache或许会跳号,比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失.所以可以在create sequence的时候用nocache防止这种情况。
  • 本篇文章是对Mysql,SqlServer,Oracle主键自动增长设置进行了详细的分析介绍,需要的朋友参考下
  • oracle序列详解和创建自增主键 Oracle序列主键 序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。 l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 1.首先创建...
  • 设置Oracle主键自增

    2021-05-08 17:59:29
    oracle没有设置主键auto increment的功能,需要自己编写序列和触发器实现主键自动递增。示例:创建表menu:create table menu( menuId number(10) not null primary key,name varchar2(40) not null,id_parent ...
  • 很多时候在做和数据库相关的操作的时候,主键不能由用户去填写或涉及多个用户同时操作一张表的时候,就需要对主键进行严格的控制,这里主要讲Oracle中如何实现主键的自增长。主要由三步组成,1)建表;2)建立序列;3)...
  • #创建一个自增的序列 create sequence demo_seq increment by 1 start with 1 nomaxvalue nominvalue nocache; #给表创建触发器 create or replace trigger demo_seq before insert on TEST_USER for each row...
  • oracle触发器实现主键自动增长操作
  • 2、创建自动增长序列 代码如下: CREATESEQUENCETestIncrease_Sequence INCREMENTBY1–每次加几个 STARTWITH1–从1开始计数 NOMAXVALUE–不设置最大值,设置最大值:maxvalue9999 NOCYCLE–一直累加,不循环 CACHE10...
  • PLSQL中Oracle设置主键自增

    千次阅读 2019-07-29 09:45:46
    1.新建序列 Name : 创建的名字 Min value : 最小计数 Max value : 最大计数 Start with : 起始计数 Increment by : 步长 Cache size : 缓存序列 Cycle : 循环序列, 2.编写触发器 对应更改相应的表名,......
  • 然后,你需要一个自定义的sequence CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 NOCACHE -- 不建缓冲区 你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,266
精华内容 10,906
关键字:

oracle设置主键自动增长