Oracle 序列+触发器

Oracle 序列+触发器

删除序列

DROP IAM_USER_PUSH_ID_SEQ;

添加序列

CREATE SEQUENCE  "IAM_USER_PUSH_ID_SEQ"  INCREMENT BY 1 MINVALUE 1 MAXVALUE 999999999999999999999999 CYCLE NOCACHE ORDER ;

触发器 -简单

create or replace trigger IAM_USER_PUSH_ID_TRI 
before insert on IAM_USER_PUSH
for each row 
begin 
select IAM_USER_PUSH_ID_SEQ.nextval into :new.id from dual; 
end;

触发器-如果存在会替换

CREATE OR REPLACE TRIGGER "IAM_USER_PUSH_ID_TRI" BEFORE INSERT OR UPDATE ON IAM_USER_PUSH
FOR EACH ROW
DECLARE
v_count NUMBER(24) :=0;
v_newVal NUMBER(24) := 0;
BEGIN
  IF INSERTING AND :new.id IS NULL THEN
    SELECT  IAM_USER_PUSH_ID_SEQ.NEXTVAL INTO v_newVal FROM DUAL;
    -- If this is the first time this table have been inserted into (sequence == 1)
    SELECT COUNT(1) INTO v_count FROM IAM_USER_PUSH WHERE ID = v_newVal;
    IF(v_count <> 0) THEN
      LOOP
           EXIT WHEN v_count = 0;
           SELECT IAM_USER_PUSH_ID_SEQ.nextval INTO v_newVal FROM dual;
         SELECT COUNT(1) INTO v_count FROM IAM_USER_PUSH WHERE ID = v_newVal;
      END LOOP;
    END IF;
   -- assign the value from the sequence to emulate the identity column
   :new.id := v_newVal;
  END IF;
END;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值