当前位置: 首页 > 编程笔记 >

Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例

束帅
2023-03-14
本文向大家介绍Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例,包括了Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例的使用技巧和注意事项,需要的朋友参考一下

问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的。而在Oracle中却没有这个功能,该如何实现呢?

答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(trigger)和序列(sequence)来模式实现。

示例:

1、建立表

create table user  

(   

    id   number(6) not null,   

    name   varchar2(30)   not null primary key  

)  

2、建立序列SEQUENCE


create sequence user_seq increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 nocache order;  

语法:
CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE
--INCREMENT BY 1    -- 每次加几个
--START WITH 1      -- 从1开始计数
--NOMAXVALUE        -- 不设置最大值
--NOCYCLE       -- 一直累加,不循环
--CACHE 10;     -- 缓存序列个数,有助于提高效率,但可能造成跳号

3、创建触发器
创建一个基于该表的before insert 触发器,在触发器中使用刚创建的SEQUENCE。

create or replace trigger user_trigger   

before insert on user  

for each row   

begin  

      select   user_seq.nextval  into:new.id from sys.dual ;   

end;  

下面就可以插入数据测试了。经过本人证明,上述方法是可行的。

 类似资料:
  • 问题内容: 我有一个表,该表的索引自动由使用序列的触发器填充(Oracle数据库) 我有一个匹配的Java类: 当我尝试持久保存A的实例时,如下所示: 我得到这个问题: 保存调用返回的代码中的ID = “ X” 数据库中的ID = “ X + 1” 有没有一种方法可以设置Hibernate来让数据库触发器创建ID? 谢谢 问题答案: HIbernate问题上发现的与Oracle触发器有关的响应,用

  • 本文向大家介绍Oracle触发器trigger详解,包括了Oracle触发器trigger详解的使用技巧和注意事项,需要的朋友参考一下 触发器相关概念及语法 概述 本篇博文中主要探讨以下内容: 什么是触发器 触发器的应用场景 触发器的语法 触发器的类型 案例 数据: 触发器的概念和第一个触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句。 每当一个特定的数据操作语句(insert u

  • 如何使用firebase作为后端服务生成一个自定义的自动增量id有点困惑。

  • 本文向大家介绍Oracle触发器实例代码,包括了Oracle触发器实例代码的使用技巧和注意事项,需要的朋友参考一下 Oracle触发器,用于选单后修改选单的表的触发动作。 以上所述是小编给大家介绍的Oracle触发器实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 本文向大家介绍Oracle使用触发器和mysql中使用触发器的案例比较,包括了Oracle使用触发器和mysql中使用触发器的案例比较的使用技巧和注意事项,需要的朋友参考一下 一、触发器   1.触发器在数据库里以独立的对象存储,   2.触发器不需要调用,它由一个事件来触发运行   3.触发器不能接收参数   --触发器的应用     举个例子:校内网、开心网、facebook,当你发一个日志,

  • 我有一个JSON作为字符串,我将其反序列化并实例化为scala的MyPOJO case类。我的数据是YYYY-MM-DD格式,但POJO createdBy中的实际属性是LocalDateTime。 如何在实例化Pojo时指定默认时间值2020-03-02 00:00:00, 序列化应返回yyyy-mm-dd格式。我的序列化和反序列化格式不同。 我尝试过自定义序列化和反序列化,如下所示,但由于缺少