安装的是Oracle10
1:打开database文件夹,找到setup.exe,点击属性,兼容性
2:以管理员身份运行这个exe,进行服务端安装,输入完后点击下一步
3:(安装时会做一些检查)点下一步 ,然后安装
4:如果跳出需要安装功能,安装就行了
安装结束退出
5:打开客户端去连接,打开PLSQL用管理员身份运行
选一下,连接进去
创建一个自增id序列
# 创建一张表
# 创建一个自增序列
create sequence USERS_SEQ -- 名称
minvalue 1
maxvalue 999999999999999999999999999 -- 最大值
start with 2 -- 从21开始
increment by 1 -- 每次递增1
cache 20;
# 创建一个触发器
create or replace trigger users_tr --名称
before insert on users -- users 表明
for each row
begin
select USERS_SEQ.nextval into :new.id from dual; --USERS_SEQ自增序列名称 id 自增的列名
end users_tr;
# 执行添加
insert into users values(null,'李四','12323213',1.1,'上海',null)
# 这里时间类型用的 date
# 添加时间类型 to_date('2021-10-26 16:47:21', 'yyyy-MM-dd HH24:mi:ss')
insert into users values(null,'李四','12323213',1.1,'上海',to_date('2021-10-26 16:47:21', 'yyyy-MM-dd HH24:mi:ss'))
# sysdate 获取当前时间
insert into users values(null,'李四','12323213',1.1,'上海',sysdate)
自增使用时可能会跳号
原因:cache会把sequence缓存在lb cache中,在lb cache中对对象的age out是基于lru算法的,如果cache 20,会把这个序列每次取的时候取出来20个,然后再在lb cache中一个一个用,但是如果在用完这20个之前,这个序列被aged out了,那么没用的那些数就丢掉了,而下次再去从dd取出sequence的时候就会去取上次那20个+1的号为开始,再来20个。这就是产生断号的原因。
解决:ORACLE给我们提供了把SEQUENCE KEEP到SHARED POOL((dbms_shared_pool包))中的方法,这样就保证了SEQUENCE的CACHE不会被交换出去,从而避免了这种情况的发生。