zoukankan      html  css  js  c++  java
  • oracle自增字段


    ----------------oracle自增字段 ,必须要序列和触发器
    --如果seq_id不插入空值,但无重复 ,有记录之后再加唯一约束
    drop table t_imp_test;
    create table t_imp_test(
      seq_id number(10),
      name varchar2(200),
      tel varchar2(200),
      dw  varchar2(200)
    );

    --如果seq_id预先有多个空值,但非空的值都不重复,能加唯一约束
    insert into t_imp_test(name,tel,dw)
    select 'aa' name,'13780001256' tel,'易方达基金公司' dw from dual
    union all select 'bb' name,'' tel,'南方基金公司' dw from dual
    union all select 'cc' name,'13780001248' tel,'博时基金公司' dw from dual
    union all select 'dd' name,'13780008888' tel,'易方达基金公司' dw from dual
    ;

    select * from t_imp_test;
    commit;
    ---加约束
    alter table t_imp_test add constraint const_t_imp_test_seq_id unique(seq_id);

    --1.建序列
    select count(1) from t_imp_test--4 开始值
    ;

    --drop sequence seq_t_imp_test_id;
    create sequence seq_t_imp_test_id
    minvalue 1
    maxvalue 9999999999
    start with 5----4+1
    increment by 1
    nocache;

    --触发器
    create or replace trigger trig_t_imp_test_id
    before insert on t_imp_test
    for each row
    begin
    select seq_t_imp_test_id.nextval into :new.seq_id from dual;
    end;

    ---修改 seq_id 的值

    update t_imp_test t set t.seq_id=(
      select rid from (
        select a.rowid rowi,rownum rid from t_imp_test a
      ) where rowi=t.rowid
    )
    where exists(
      select rid from (
        select a.rowid rowi,rownum rid from t_imp_test a
      ) where rowi=t.rowid
    );

    select * from t_imp_test;
    ---测试
    insert into t_imp_test(name,tel,dw)
    select 'ee' name,'13780001259' tel,'易方达基金公司' dw from dual
    union all select 'ff' name,'' tel,'南方基金公司' dw from dual
    ;
    select * from t_imp_test; -------ok 序列从5开始
    commit;

  • 相关阅读:
    div 背景透明,字体不透明
    弹性盒子(1)
    小练习(4)
    小练习(3)
    图标文字上拉效果
    小练习(2)
    小练习
    css的使用(1)
    复合的使用
    表单元素的使用 form input
  • 原文地址:https://www.cnblogs.com/jiangqingfeng/p/9156133.html
Copyright © 2011-2022 走看看