• oracle设置自动增长序列


    我们在用MS SQL Server时,可以为表的主键设置为自动加1的效果;但是在Oracle当中,我们是无法直接设置一个字段为自动加1,需要先建立一个Sequence,然后为这个表创建一个Trigger,具体步骤如下:

    1.先建立一个Order表格,用如下SQL语句

    create table SCOTT.ORDER
    (
          ID          NUMBER(10) not null,
          BUYER       CHAR(20) not null,
          MERCHANDISE VARCHAR2(50) not null,
          QUANTITY    LONG not null,
          UNITPRICE   NUMBER(10,2) not null,
          TOTALPRICE  NUMBER(20,4),
          DESCRIPTION NVARCHAR2(1000),
          PRIMARY KEY("ID")
    )

    2.创建一个序列,从10000开始计数,增量为1

    create sequence ORDER_ID
    minvalue 1
    maxvalue 9999999999999999999999999999
    start with 10000 --从10000开始生成序列
    increment by 1 --增量为1
    cache 20; --预存20个序列值在内存中,这样可以提高访问序列的速度

    3.为Order表创建一个before insert的触发器,在插入之前将表order的主键设置为上面的序列值.

    CREATE OR REPLACE TRIGGER "ORDER_ID_GENERATOR" BEFORE
    INSERT ON "SCOTT"."ORDER" FOR EACH ROW --一定要加上For each row,表示该触发器适应于每一条记录
    declare   
          mid number;   
    begin   
          select order_id.nextval into mid from dual; --order_id.nextval是获得上面定义的序列ORDER_ID的下一个值
          :new.id:=mid; --将得到的序列值赋给表order的主键id, 可以用":new"引用将要插入的一行数据
    end;

    这样,当执行插入记录的时候,可以这样写

    insert into order(buyer,merchandise,quantity,unitprice)values("ABC","Product_ABC",200,10);

    Oracle会调用上面创建的触发器将序列值赋值给主键ID

  • 相关阅读:
    表单控件和属性
    html5语义化标签
    移动布局
    webpack
    OMobile
    Npm的下载 安装 管理工具
    模块化开发
    百度地图
    离线缓存
    canvas和svg
  • 原文地址:https://www.cnblogs.com/fengwenzhee/p/7798228.html
Copyright © 2020-2023  润新知