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

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于数据库中的主键的自动增长

Mysql、SqlServer、Oracle主键自动增长的设置 1、把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: create table customers(id int auto_increment primary key not null, name varchar(15)); insert into customers(name) values(name1),(name2); 2、在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如: create table customers(id int identity(1,1) primary key not null, name varchar(15)); insert into customers(name) values(name1),(name2); identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。 3、Oracle列中获取自动增长的标识符 在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。 例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。 方法一、 create sequence customer_id_seq INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10; 一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。 curval:返回序列的当前值 nextval:先增加序列的值,然后返回序列值 create table customers(id int primary key not null, name varchar(15)); insert into customers values(customer_id_seq.curval, name1),(customer_id_seq.nextval, name2); 方法二、或者通过存储过程和触发器: 1、通过添加存储过程生成序列及触发器: create or replace PROCEDURE PR_CREATEIDENTITYCOLUMN (tablename varchar2,columnname varchar2) as strsql varchar2(1000); begin strsql := create sequence seq_||tablename|| minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache; execute immediate strsql; strsql := create or replace trigger trg_||tablename|| before insert on ||tablename|| for each row begin select seq_||tablename||.nextval into :new.||columnname|| from dual; end;; execute immediate strsql; end; 2、 对表进行执行存储过程 exec PR_CREATEIDENTITYColumn(XS_AUDIT_RECORD,AUDIT_RECORD_ID); 上一种方案对每一张表都要进行,下面根据用户批量生成 select a.table_name, b.column_name from dba_constraints a, dba_cons_columns b where a.constraint_name = b.constraint_name and a.CONSTRAINT_TYPE = P and a.owner=user; 3、添加执行存储过程的role权限,修改存储过程,加入Authid Current_User时存储过程可以使用role权限。 create or replace procedure p_create_table Authid Current_User is begin Execute Imme

您可能关注的文档

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档