oracle 主键生成策略-sequence序列+trigger触发器

mac2022-06-30  21

oracle中设置表的主键字段为自增序列(实例)1、首先创建一个表(如日志表)

//删除库表中存在的日志表drop table S_LOG_INFO cascade constraints;//新建日志表create table S_LOG_INFO ( PRIMARYKEY NUMBER not null,//主键 USERACCOUNT VARCHAR2(50),//操作用户账号 USERNAME VARCHAR2(100),//操作用户 OPERATIONTIME DATE,//操作时间 LOGTYPE VARCHAR2(100),//日志类型 SYSTEMTYPE VARCHAR2(500),//系统类型 MODUAL VARCHAR2(100),//功能模块 FUN VARCHAR2(50),//功能方法 CONTENT VARCHAR2(500),//操作说明 LOGSTATUS VARCHAR2(50),//操作结果 constraint PK_S_LOG_INFO primary key (PRIMARYKEY));2、创建主键序列

/*创建自增序列*/CREATE SEQUENCE S_LOG_INFO_PRIMARYKEY_SEQUENCEMINVALUE 1 --最小值NOMAXVALUE --不设置最大值START WITH 1 --从1开始计数INCREMENT BY 1 --每次加1NOCYCLE --一直累加,不循环NOCACHE; --不建缓冲区3、创建触发器实现数据插入时触发主键自动增长

CREATE OR REPLACE TRIGGER S_LOG_INFO_TRIGGER BEFORE INSERT ON S_LOG_INFO FOR EACH ROW WHEN(NEW.PRIMARYKEY IS NULL)BEGIN SELECT S_LOG_INFO_PRIMARYKEY_SEQUENCE.NEXTVAL INTO:NEW.PRIMARYKEY FROM dual;END;4、测试,添加数据

INSERT INTO S_LOG_INFO (LOGSTATUS, USERACCOUNT, LOGTYPE, SYSTEMTYPE, CONTENT, FUN, USERNAME, MODUAL) VALUES ('成功','123','系统日志', 'XXXXXXX', '用户成功注销', 'doLogout', 'admin','系统注销')

———————————————— 版权声明:本文为博主「逆之雪」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_31811587/article/details/81128498

转载于:https://www.cnblogs.com/lxy061654/p/11371408.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)