Oracle数据库创建序列与触发器
序列
一、序列的定义
序列是Oracle数据库中用于生成唯一数值的对象。
二、序列的作用
1、自动生成唯一主键值:
在数据库中,表的主键通常需要具有唯一且连续的值。序列可以为表的主键提供自增的值,避免手动指定主键值的麻烦和冲突。
2、用于生成唯一的标识符:
序列可以生成唯一的标识符,用于标识某个实体或对象。例如,在分布式系统中,可以使用序列生成全局唯一的标识符,以确保不同节点生成的标识符不会冲突。
3、用于产生连续的数值:
有时候需要按照一定的规则生成连续的数值,例如订单号、流水号等。序列可以按照指定的步长递增生成连续的数值,确保数值的唯一性和连续性。
4、用于实现自定义逻辑:
序列可以与触发器、存储过程等数据库对象结合使用,实现自定义逻辑。例如,在触发器中使用序列生成时间戳、版本号等。
5、总结:
总之,序列在Oracle数据库中具有重要的作用,可以方便地生成唯一的数值,提供自增的功能,确保数据的唯一性和连续性,并支持自定义逻辑的实现。
三、序列的创建
- 使用 CREATE SEQUENCE 语句创建序列。例如,创建一个名为 your_sequence 的序列:
create sequence seq_today_flow_id
start with 1
increment by 1
CACHE 100;
- 序列的名称为 seq_today_flow_id。
- START WITH 1 指定序列的初始值为 1。
- INCREMENT BY 1 指定序列每次增加的步长为 1。
- 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;
/
- 触发器的名称为 T_SECURITY_TF_TRG_INS和T_SECURITY_TF_TRG_UPD,在 BEFORE INSERT 事件发生之前执行。
- T_SECURITY_TF_TRG_INS 是需要创建触发器的表的名称。
- 在触发器的 BEGIN 和 END 之间定义了触发器的操作,即设置 :NEW.modify_time 为当前时间。