[小结]对比实现自动编号功能的几种方法

系统 1819 0

--自动编号:Oracle
建表
create table t1(autoid number(10) primary key,name char(4));
创建序列
create sequence seq_t1_autoid;
添加数据
insert into t1(autoid,name) values(seq_t1_autoid.nextval,'a');
insert into t1(autoid,name) values(seq_t1_autoid.nextVal,'b');
commit;

--思考:能不能实现一个与DBMS无关的自动编号方法?
insert into t1(autoid,name) select max(autoid)+1,'c' from t1;
insert into t1(autoid,name)  select max(autoid)+1,'d' from t1;
commit;

--改正:
insert into t1(autoid,name) select nvl(max(autoid),0)+1,'c' from t1;
insert into t1(autoid,name)  select nvl(max(autoid),0)+1,'d' from t1;
commit;


面试:如何在Oracle中实现与Mysql一样的自动编号:
解决:使用触发器

create table t1(autoid number(10) primary key);
create sequence seq_t1_autoid;
create or replace trigger tr_t1_autoid
before insert on Friend
for each row
begin
  select seq_t1_autoid.nextval into :new.autoid from dual;
end;

--测试:
insert into t1(name) values('a');
insert into t1(name) values('b');
commit;

select * from t1; 

autoid  name  
     1      a    
     2      b    
+--------+------+

[小结]对比实现自动编号功能的几种方法


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论