zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    matplot 代码实例2
    sklearn 线性模型使用入门
    python 之 决策树分类算法
    Leetcode 之Simplify Path @ python
    协同过滤CF算法之入门
    linux 下 rpc python 实例之使用XML-RPC进行远程文件共享
    Linux rpc 编程最简单实例
    Opencv 入门学习之图片人脸识别
    Django1.7开发博客
    Opencv 入门学习1
  • 原文地址:https://www.cnblogs.com/fengwenzhee/p/7798228.html
Copyright © 2011-2022 走看看