关于数据库中的主键的自动增长

关于数据库中的主键的自动增长

ID:34742963

大小:60.68 KB

页数:3页

时间:2019-03-10

关于数据库中的主键的自动增长_第1页
关于数据库中的主键的自动增长_第2页
关于数据库中的主键的自动增长_第3页
资源描述:

《关于数据库中的主键的自动增长》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Mysql、SqlServer、Oracle主键自动增长的设置1、把主键定义为自动增长标识符类型在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:createtablecustomers(idintauto_incrementprimarykeynotnull,namevarchar(15));insertintocustomers(name)values("name1"),("name2");2、在MSSQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:createtablecusto

2、mers(idintidentity(1,1)primarykeynotnull,namevarchar(15));insertintocustomers(name)values("name1"),("name2");identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。3、Oracle列中获取自动增长的标识符在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。方法一、createsequencecustom

3、er_id_seqINCREMENTBY1--每次加几个STARTWITH1--从1开始计数NOMAXVALUE--不设置最大值NOCYCLE--一直累加,不循环CACHE10;一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。curval:返回序列的当前值nextval:先增加序列的值,然后返回序列值createtablecustomers(idintprimarykeynotnull,namevarchar(15));insertintocustomersvalues(customer_id_seq.curval,"name1"

4、),(customer_id_seq.nextval,"name2");方法二、或者通过存储过程和触发器:1、通过添加存储过程生成序列及触发器:createorreplacePROCEDURE"PR_CREATEIDENTITYCOLUMN"(tablenamevarchar2,columnnamevarchar2)asstrsqlvarchar2(1000);beginstrsql:='createsequenceseq_'

5、

6、tablename

7、

8、'minvalue1maxvalue999999999999999999startwith1incrementby1nocach

9、e';executeimmediatestrsql;strsql:='createorreplacetriggertrg_'

10、

11、tablename

12、

13、'beforeinserton'

14、

15、tablename

16、

17、'foreachrowbeginselectseq_'

18、

19、tablename

20、

21、'.nextvalinto:new.'

22、

23、columnname

24、

25、'fromdual;end;';executeimmediatestrsql;end;2、对表进行执行存储过程execPR_CREATEIDENTITYColumn('XS_AUDIT_RECORD','AUDIT_RECORD_

26、ID');上一种方案对每一张表都要进行,下面根据用户批量生成selecta.table_name,b.column_namefromdba_constraintsa,dba_cons_columnsbwherea.constraint_name=b.constraint_nameanda.CONSTRAINT_TYPE='P'anda.owner=user;3、添加执行存储过程的role权限,修改存储过程,加入AuthidCurrent_User时存储过程可以使用role权限。createorreplaceprocedurep_create_tableAuthidCurrent

27、_UserisbeginExecuteImmediate'createtablecreate_table(idint)';endp_create_table;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。