oracle触发器实现主键自增

本文介绍了如何在Oracle数据库中创建序列和触发器,以实现在插入或更新`USER_DETAIL`表时,主键自增且`create_time`和`operation_time`字段自动获取当前时间戳。通过`S_USER_DETAIL`序列和`T_USER_DETAIL`触发器,确保了数据操作的自动化和一致性。
摘要由CSDN通过智能技术生成

oracle触发器实现主键自增

直接上代码解释

CREATE SEQUENCE  **"SHINE"."S_USER_DETAIL"**  MINVALUE 0 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 **CACHE 20** ORDER  NOCYCLE ;
create or replace trigger **T_USER_DETAIL**
  before
  insert or update
  on **USER_DETAIL**
  for each row
declare
  nextid number;
  now_date date;
begin
  select systimestamp into now_date from dual;
  case
    when inserting then
      IF :new.ID IS NULL or :new.ID = 0 THEN
        select **S_USER_DETAIL**.nextval into nextid from sys.dual;
        :new.ID := nextid;
      end if;
      :new.create_time := now_date;
      :new.opetation_time := now_date;
    when updating then
      :new.opetation_time := now_date;
  end case;
end **T_USER_DETAIL**;

“SHINE”."S_USER_DETAIL 数据库.序列化表名(需要自己起一般在原表名前加S)

USER_DETAIL 数据库中原始的表名

T_USER_DETAIL 临时表名(需要自己起一般在原表名前加T)

每张表创建触发器都要改我加粗几个地方,另外如果表中有create_time,opetation_time两个字段,这个触发器设置这两个字段默认值(符合逻辑的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值