怎么让oracle数据库的主键自增

怎么让oracle数据库的主键自增,第1张

建立一个序列啊,每次从序列中取值,提醒一下插入值的时候不要插入主键,用一个触发器自动插入主键的值,给你我的一个案例

CREATE OR REPLACE TRIGGER CRC_028_INOUT_SUMMARY_T(触发器名)

BEFORE INSERT ON CRC_028_INOUT_SUMMARY(表名称)

FOR EACH ROW

DECLARE

L_SUMMARY_ID NUMBER := 0;

BEGIN

-- CRC_028_INOUT_SUMMARY_S 是序列名

SELECT CRC_028_INOUT_SUMMARY_SNEXTVAL INTO L_SUMMARY_ID FROM DUAL;

:NEWSUMMARY_ID := L_SUMMARY_ID;

END;

好好看看,可以参考我的博客:>

这是数据库主键自增的固然性质所决定的,数据删除后,主键还是会继续增加的,即主键使用过一次将不会再次使用。

例如:这个表中有10条数据,主键为1-10不间断的数字,那删除第十条数据,继续插入的话,id则会变成11,而不是10。通俗的说就是主键使用过一次将不会再次使用。

每次插入则不需要为主键设置参数,数据库会根据设置的递增条件,自动给出主键值。则第一次插入后主键为1,第二次为2,依次递增。

扩展资料:

Mysql、SqlServer主键自动增长的设置方法:

1、在mysql中把主键定义为自动增长标识符类型

如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:

createtablecustomers(idintauto_incrementprimarykeynotnull,namevarchar(15));insertintocustomers(name)values("name1"),("name2");

2、在MSSQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:

createtablecustomers(idintidentity(1,1)primarykeynotnull,namevarchar(15));insertintocustomers(name)values("name1"),("name2");identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。

参考资料来源:百度百科-主键约束

01

打开数据库客户端,点击连接上你的数据库。

02

在对应的库上,点击展开表视图。

03

右键点击要设置的表,点击‘表设计’

04

打开表设计页面,点击选中主键字段。

05

点击后,在下方就会出现这个字段的设置,点击勾选上‘Auto Increment’就行了,这个就是自增长的属性。

类似

CREATE TABLE BOOKINFO (

ID bigint(20) NOT NULL AUTO_INCREMENT,

BOOKNAME VARCHAR(45),

PRIMARY KEY (`ID`)

) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8

存储引擎和默认字符集选择你需要的就好,AUTO_INCREMENT=10001表示的就是从10001开始自增

插入时使用类似:

insert into bookinfo values (null,'BOOK1');

就可以实现自增。

需要注意的是,设为自增的列(这里是ID)一定入索引(不一定需要主键索引,任何索引都行,但是没有比把自增列当主键更合适的了吧)。

oracle的自增需要依靠序列和触发器共同实现

比如

先创建一个表

create table test(id int primary key,

name varchar2(10));

创建一个序列

create sequence test_seq 

increment by 1 

start with 1 

minvalue 1 

maxvalue 9999999999999 

nocache 

order;

触发器实现

create or replace trigger test_trigger

before insert on testfor each row

begin     

select  test_seqNextval into:newid from dual;

end;

然后你试试吧

insert into test (name) values ('张三');

以上就是关于怎么让oracle数据库的主键自增全部的内容,包括:怎么让oracle数据库的主键自增、SQL数据库中使自增的数据类型、mysql数据库主键设置了自增,但是,我把删除了一些数据,随后加的数据为什么会自增ID会接着已经删除了的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9872589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存