加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_常德站长网 (https://www.0736zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Oracle数据库中创建自增主键的实例教程 oracle数据库怎么设置主键自增

发布时间:2022-09-17 15:11:19 所属栏目:MySql教程 来源:
导读:  Oracle数据库中创建自增主键的实例教程 oracle数据库怎么设置主键自增

  2022-09-12 16:20炫影魔心

  在设计数据库表的时候发现Oracle没有自增主键的设置创建数据库表,Google了解到Oracle本身并不支
  Oracle数据库中创建自增主键的实例教程 oracle数据库怎么设置主键自增
 
  2022-09-12 16:20炫影魔心
 
  在设计数据库表的时候发现Oracle没有自增主键的设置创建数据库表,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发......
 
  在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现。
 
  创建表Student
 
  Create Table Student(
   id number(12) primary key, --通过序列和触发器实现id的自增
   name varchar2(20) ,
   age number(3) ,
   sex number(1)
  )
  创建序列Sequence
 
  Create Sequence SEQ_STUDENT
  minvalue 1
  maxvalue 99999999999999999999
  start with 1   --从1开始
  increment by 1 --增量为1
  cache 0
  order;
  创建触发器Trigger
 
  Create or Replace Trigger STUDENT_AUTOINCREMENT
  Before Insert on Student
  For Each Row
  When (NEW.ID IS NULL)
  Begin
  Select SEQ_STUDENT.NEXTVAL INTO :NEW.ID FROM DUAL;
  End;
  注意点:
 
  1:一个sequence可以被多个表共享。
 
  2:被多个表共享的sequence生成的数字序列始终连续,不会重新开始。
 
  3:如果不再使用的sequence请删除。
 
  SELECT * FROM DAYSBFJ.DAYS_CARD_UPDATE3 order by id asc
  --alter table DAYSBFJ.DAYS_CARD_UPDATE3 add source_Flag varchar2(2);
  --create sequence DAYS_CARD_UPDATE2_SEQ_ID minvalue 1 maxvalue 999999999 start with 1;
  --Update DAYSBFJ.DAYS_CARD_UPDATE2 set id = DAYS_CARD_UPDATE2_SEQ_ID.nextval;
  --update DAYSBFJ.DAYS_CARD_UPDATE3 set SOURCE_FLAG = "2"
  另一个例子:
 
  新建一个缺少主键的表
 
  create table test1(name1 varchar2(40),city varchar2(40));
  --插入数据
 
  insert into test1 values("name1","nanjing");
  insert into test1 values("name1","nanjing");
  insert into test1 values("name2","nanjing1");
  insert into test1 values("name3","nanjing2");
  insert into test1 values("name4","nanjing3");
  insert into test1 values("name5","nanjing4");
  insert into test1 values("name6","nanjing5");
  insert into test1 values("name7","nanjing6");
  insert into test1 values("name8","nanjing7");
  insert into test1 values("name9","nanjing8");
  insert into test1 values("name10","nanjing9");
  insert into test1 values("name10","nanjing9");
  insert into test1 values("name12","nanjing11");
  insert into test1 values("name13","nanjing12");
  insert into test1 values("name14","nanjing13");
  commit;
  --增加主键ID
 
  alter table TEST1 add id number(10);
  --设置sequence使ID自增
 
  create sequence SEQ_ID
   minvalue 1
   maxvalue 999999999
   start with 1;
  --将id的值设置为sequence
 
  Update test1 set id=seq_id.nextval;
  commit;
  --设置id为主键
 
  alter table TEST1
   add constraint PK_TEST1 primary key (ID);
   
  select ID,Name1,CITY from TEST1;
 

(编辑:应用网_常德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!