关于达梦数据库自增列插入数据问题

自增列插入数据问题

在使用数据库时有时候我们会向自增列插入数据,但是在自增列中数据是无法插入的,这时候我们可以通过SET IDENTITY_INSERT方式来插入数据
自增列使用注意事项:
1.自增列只适用于int和bigint字符类型,其它字符类型不适用
2.自增列的值不允许修改和更新
有一些特殊情况我们可能需要向自增列插入数据,这个时候我们需要使用SET IDENTITY_INSERT。在使用这个命令时也有一些注意事项
1.IDENTITY_INSERT属性的默认值为OFF。SET IDENTITY_INSERT 的设置是在 执行或运行时进行的。当一个连接结束,IDENTITY_INSERT属性将被自动还原为OFF;
2.DM 要求一个会话连接中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON, 当设置一个新的表 IDENTITY_INSERT 属性设置为 ON 时,之前已经设置为 ON 的表会自 动还原为OFF。当一个表的IDENTITY_INSERT 属性被设置为ON时,该表中的自动增量 列的值由用户指定。如果插入值大于表的当前标识值(自增列当前值),则 DM自动将新插入 值作为当前标识值使用,即改变该表的自增列当前值;否则,将不影响该自增列当前值;
3.当设置一个表的 IDENTITY_INSERT 属性为OFF时,新插入行中自增列的当前值 由系统自动生成,用户将无法指定;
4.自增列一经插入,无法修改;
5.手动插入自增列,除了将IDENTITY_INSERT设置为ON,还要求在插入列表中明 确指定待插入的自增列列名。插入方式与非 IDENTITY 表是完全一样的。如果插入时,既 不指定自增列名也不给自增列赋值,则新插入行中自增列的当前值由系统自动生成。
我们来新建一张表使用自增列属性

create table test1 (id int identity, name char(20))

向表内插入数据查看自增列变化

insert into test1 values ('lhq')
insert into test1 values ('ssy')
insert into test1 values ('ysy')

查看表内数据情况

在这里插入图片描述
可以看到ID自增列的数据已自动增加
此时我们向自增列插入数据

insert into test1 values (4,'wn')

报错如下
在这里插入图片描述
此时就需要用到语句SET IDENTITY_INSERT

SET IDENTITY_INSERT SYSDBA.TEST1 on

此时在插入列表中明确指定待插入的自增列列名

insert into test1 (id , name) values (4,'wn')

查看是否插入成功
在这里插入图片描述
插入成功
手动插一个非顺序的数据,然后再插入数据,再查看自增列

insert into test1 (id , name) values (7,'ljd')
insert into test1 values ('lsy')

查看表中数据在这里插入图片描述
可以看到后续的数据会根据手动插入的顺序执行

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值