1:业务表
create table A_TEST_TRIGGER
(
ID VARCHAR2(255 CHAR) not null,
SN VARCHAR2(255 CHAR)
)
2:保存当前序列号的表:
create table SEQUENCE_GENERATOR
(
KEY VARCHAR2(20) not null,
CURRENT_SEQ NUMBER(20)
)
3:创建触发器
CREATE OR REPLACE TRIGGER test_sn_generator
BEFORE INSERT ON learn.a_test_trigger
FOR EACH ROW
DECLARE
sn_no VARCHAR2(1000);
BEGIN
select current_seq||'aaaaa' INTO :NEW.SN FROM sequence_generator for update;
update sequence_generator set current_seq = current_seq +1 where key = '51080201IA';
END;
4:这样当业务表中插入数据
insert into a_test_trigger(id, sn) values(1, 'a');
时根据sequence_generator表生成序列号
5:注意在查询sequence_generator 时使用了 悲观锁
6:这样就可以根据一定的业务规则生成序列号了。
因为触发器与当前session在同一个事务中,所以与其他的session隔离了。
最后
以上就是热心小天鹅最近收集整理的关于mysql 触发器生成序列号_使用触发器订单序列号生成的全部内容,更多相关mysql内容请搜索靠谱客的其他文章。
发表评论 取消回复