如何在MySQL&Oracle下创建自动递增字段

如何在MySQL&Oracle下创建自动递增字段,第1张

如何在MySQL&Oracle下创建自动递增字段

在MySQL下创建自动递增字段

create table article   //先创建一个表

(       

id int primary key auto_increment   //设置该字段为自动递增字段

title varchar( )

)

insert into article values (null a )     //向数据库中插入数据

select * from article   结果如下

Id

Title

a

insert into article values (null b )

insert into article values (null c )

insert into article  (title)  values ( d )

select * from article   结果如下

Id

Title

a

b

c

d

但是oracle没有这样的功能 但是通过触发器(trigger)和序列(sequence)可以实现

假设关键字段为id 建一个序列 代码为

create sequence seq_test_ids minvalue maxvalue start with increment by nocache order <! [if !supportLineBreakNewLine] ><! [endif] >

建解发器代码为

lishixinzhi/Article/program/Oracle/201311/18903

一、修改自增长序列的值

alter table table_name auto_increment=n

注意:n只能大于已有的auto_increment的整数值,小于的值无效.

show table status like 'table_name' 的返回结果里的auto_increment列就是表的现有值.

二、控制主键的起点

create table 表名

(

......

) engine=INNODB auto_increment=1001 default charset=gbk

三、自增主键归零

如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数

truncate table 表名

四、获取自增主键

通过SQL select LAST_INSERT_ID()函数

通过SQL @@IDENTITY 变量

五、说明

AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。

AUTO_INCREMENT数据列必须具备NOT NULL属性。

设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。

修改sql如下

select (@xh := @xh + 1) as xh, a.* from (select * from auto where level = 3) a, (select @xh := 0) x

结果如下


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

原文地址:https://54852.com/zaji/8596790.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存