Oracle数据库创建序列与触发器

序列

一、序列的定义

序列是Oracle数据库中用于生成唯一数值的对象。

二、序列的作用

1、自动生成唯一主键值:

在数据库中,表的主键通常需要具有唯一且连续的值。序列可以为表的主键提供自增的值,避免手动指定主键值的麻烦和冲突。

2、用于生成唯一的标识符:

序列可以生成唯一的标识符,用于标识某个实体或对象。例如,在分布式系统中,可以使用序列生成全局唯一的标识符,以确保不同节点生成的标识符不会冲突。

3、用于产生连续的数值:

有时候需要按照一定的规则生成连续的数值,例如订单号、流水号等。序列可以按照指定的步长递增生成连续的数值,确保数值的唯一性和连续性。

4、用于实现自定义逻辑:

序列可以与触发器、存储过程等数据库对象结合使用,实现自定义逻辑。例如,在触发器中使用序列生成时间戳、版本号等。

5、总结:

总之,序列在Oracle数据库中具有重要的作用,可以方便地生成唯一的数值,提供自增的功能,确保数据的唯一性和连续性,并支持自定义逻辑的实现。

三、序列的创建

  1. 使用 CREATE SEQUENCE 语句创建序列。例如,创建一个名为 your_sequence 的序列:
create sequence seq_today_flow_id
start with 1 
increment by 1 
CACHE 100;
  1. 序列的名称为 seq_today_flow_id。
  2. START WITH 1 指定序列的初始值为 1。
  3. INCREMENT BY 1 指定序列每次增加的步长为 1。
  4. CACHE 表示提前缓存序列值,100个。

触发器

一、触发器定义

触发器是数据库中的一种特殊对象,它是一段被预定义的SQL代码,当数据库中的某个事件(如插入、更新、删除等)发生时,触发器会自动执行这段代码。

二、触发器的创建

1、使用 CREATE OR REPLACE TRIGGER 语句创建触发器。例如,创建一个在插入新记录时自动添加创建时间以及修改时自动更新修改时间的触发器:

--触发器
create or replace trigger "T_SECURITY_TF_TRG_INS"
    before insert on T_SECURITY_TODAY_FLOW for each row
begin
    select seq_today_flow_id.nextval into :new.ID from dual;
    select sysdate into :new.CREATE_TIME from dual;
    select sysdate into :new.UPDATE_TIME from dual;
end;
/
create or replace trigger "T_SECURITY_TF_TRG_UPD"
    before update on T_SECURITY_TODAY_FLOW for each row
begin
    select sysdate into :new.UPDATE_TIME from dual;
end;
/
  1. 触发器的名称为 T_SECURITY_TF_TRG_INS和T_SECURITY_TF_TRG_UPD,在 BEFORE INSERT 事件发生之前执行。
  2. T_SECURITY_TF_TRG_INS 是需要创建触发器的表的名称。
  3. 在触发器的 BEGIN 和 END 之间定义了触发器的操作,即设置 :NEW.modify_time 为当前时间。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Run,boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值