Oracle数据库中创建自增主键的实例教程 oracle数据库怎么设置主键自增
发布时间:2022-09-17 15:11:19 所属栏目:MySql教程 来源:
导读: Oracle数据库中创建自增主键的实例教程 oracle数据库怎么设置主键自增
2022-09-12 16:20炫影魔心
在设计数据库表的时候发现Oracle没有自增主键的设置创建数据库表,Google了解到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; (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐