数据库表ID怎么设置自动增长

数据库表ID怎么设置自动增长,第1张

进入设计表界面

首先将该字段的数据类型选成数值型的,比如decimal或者bigint

然后在下面列的标识处,选择“是”

然后下面两行,标识种子:表示自动增长的起点是几,默认1

标识增量:表示每次自增的时候跨度是多少,默认每次自增1

1、需要表结构,如字段名等

2、“另一库的同名表”有歧义,和哪个表同名?还是也有两个表,分别同名?

经补充说明后,这的确是个好问题。

感觉上只能写个存储过程,采用游标逐行遍历DBA的TBA之待增数据,插入DBB的TBA之后,马上获取刚刚采用的自增序列值,修正TBB的该字段。

建议你仔细想想,亲自实现,这样既能印象深刻,又会有成就感,若实在因事急迫,再来求“鱼”。

假设我们有一个java实体类User,它有三个属性:

1

2

3

private Integer id; //主键

private String name; //姓名

private double rate; //进度

构造方法、setter、getter都是正常且完善的。

数据库中有一张对应的t_user表:

1

2

3

4

5

6

7

--mysql数据库

create table t_user

(

id integer primary key auto_increment,

name varchar(20),

rate double

)engine=INNODB;

或者

1

2

3

4

5

6

7

8

9

10

--oracle数据库

create table t_user

(

id number(11) primary key,

name varchar2(20),

rate number(10,2)

);

--主键序列

create sequence seq_user_id;

在Userxml配置文件中,插入User的配置一般为:

<insert id="insertUser" parameterClass="User">

insert into t_user (ID, NAME, RATE) values (#id#, #name#, #rate#)

</insert>

这样,在java代码中调用方式为:

1

sqlMapperinsert("insertUser", user); //此处的user应该保证id是正确的

为了使用ibatis生成主键,我们可以使用如下配置:

1

2

3

4

5

6

7

8

<!-- mysql -->

<insert id="insertUserByAutoIncrement" parameterClass="User">

insert into t_user (NAME,RATE) values (#name#, #rate#)

<!-- 注意:上述SQL语句中不插入主键id -->

<selectKey resultClass="int" keyProperty="id">

SELECT LAST_INSERT_ID() AS VALUE

</selectKey>

</insert>

或者

<!-- Oracle -->

<insert id="insertUserBySequence" parameterClass="User">

<selectKey resultClass="int" keyProperty="id">

SELECT seq_user_idNEXTVAL AS VALUE FROM DUAL

</selectKey>

<!-- 注意:下列SQL语句中必须插入ID -->

insert into t_user (ID, NAME, RATE) values (#id#, #name#, #rate#)

</insert>

注意,这里需要说明一下,不同的数据库,主键生成方式是不同的

mysql:SELECT LAST_INSERT_ID() AS VALUE

mssql:select @@IDENTITY as value

oracle:SELECT SEQUENCENEXTVAL [AS VALUE] FROM DUAL

还有一点需要注意的是有些数据库是预先生成 (pre-generate)主键的,如Oracle和PostgreSQL,有些数据库是事后生成(post-generate)主键的,如MySQL和SQL Server。所以如果是Oracle数据库,则需要将selectKey写在insert之前。

sequence就是一个序列,你每次执行 select CASE_SEQnextval from dual 的时候都会返回唯一的一个ID号,因此你可以先执行这个select取到这个ID,如果这个时候有多个用户在执行这个 *** 作,那么他们select到的ID绝对跟你的不一样(sequence就是保证这一点的)。然后你就可以用这个ID插入记录,然后再返回这个ID就OK了。 代码: string sql = "Select CASE_SEQcurrval from dual"; OracleConnection conn = DBgetCon(); OracleCommand cmd = connCreateCommand(); connOpen(); string returnID = null; cmdCommandText = sql; returnID = ConvertToString(cmdExecuteScalar()); //获取ID sql = "insert into PATIENT_T(pid,name) values(returnID,'黎明')"; //将ID插入数据库 cmdCommandText = sql; cmdExecuteNonQuery(); connClose(); 结束了,差不多就是这样,楼主自己调试一下就行了,注意ID在数据库中应该是varcahr类型的

SELECTIDENT_CURRENT('TableName')--返回当前的最后自动编号SELECTIDENT_INCR('TableName')--返回增量值SELECTIDENT_SEED('TableName')--返回种子值返回下一个自动编号:SELECTIDENT_CURRENT('TableName')+(SELECTIDENT_INCR('TableName'))--创建数据库和表createdatabaseMyDataBaseuseMyDataBasecreatetablemytable(idintidentity(1,1),namevarchar(20))--执行这个SQL,就能查出来刚插入记录对应的自增列的值insertintomytablevalues('李四')select@@identitydeclare@new_idintinsertintotest_idvalues('haha')

以上就是关于数据库表ID怎么设置自动增长全部的内容,包括:数据库表ID怎么设置自动增长、MSSQL,两表通过一个自增字段关联,怎样将两表数据批量插入另一库的同名表(有数据)中、ibatis循环批量插入数据,表中五个字段,id自增长,我需要把最重要的两个字段插入,怎么写xml的sql呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/sjk/10163082.html

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

发表评论

登录后才能评论

评论列表(0条)

保存