各位哥哥,姐姐,帮帮忙!特急。。。。关于数据库自动编号问题

lantian_019 2011-03-19 08:52:53
表A的内容是这样的:


对表A其中的一行即币种是美元删除之后:

现在我想把对表A进行添加“美元”这一行的数据,但是问题在于该表的i_id字段是自动编号的,
添加之后表的内容就是如下所示:

请哥哥,姐姐帮帮忙怎样才能把新增的i_id字段编号是2,而不是自动添加的编号!
谢谢了................
...全文
161 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lantian_019 的回复:]
我按照各各位哥哥,姐姐说的去做了,然后又提示这样一个错误的信息:

消息 273,级别 16,状态 1,第 1 行
不能将显式值插入时间戳列。请对列列表使用 INSERT 来排除时间戳列,或将 DEFAULT 插入时间戳列。

其中表中pubufts的数据类型是时间戳,该怎么解决啊!
[/Quote]
--不能显式给timestamp类型字段插入值
insert into tb(id,...) values(2,...) --tb(id,...)列表中不要timestamp字段即可
AcHerat 2011-03-19
  • 打赏
  • 举报
回复

create table tb(id int identity(1,1),a timestamp)
go

set identity_insert tb on

insert into tb(id,a) values(2,null)
insert into tb(id,a) values(3,null)
go

select id,a
from tb

set identity_insert tb off

drop table tb

/*

id a
----------- ------------------
2 0x0000000000001772
3 0x0000000000001773

(2 行受影响)
lantian_019 2011-03-19
  • 打赏
  • 举报
回复
唉呀,哥哥,姐姐帮帮忙啊,都过来看看呗
lantian_019 2011-03-19
  • 打赏
  • 举报
回复
我按照各各位哥哥,姐姐说的去做了,然后又提示这样一个错误的信息:

消息 273,级别 16,状态 1,第 1 行
不能将显式值插入时间戳列。请对列列表使用 INSERT 来排除时间戳列,或将 DEFAULT 插入时间戳列。

其中表中pubufts的数据类型是时间戳,该怎么解决啊!
AcHerat 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lantian_019 的回复:]

为什么要在美元前面加个N呢?
[/Quote]

避免插入时中文变为 ??? unicode 和 非unicode 的区别。
lantian_019 2011-03-19
  • 打赏
  • 举报
回复
为什么要在美元前面加个N呢?
wing7742 2011-03-19
  • 打赏
  • 举报
回复

DECLARE @pkid INT
SELECT @pkid=IDENT_CURRENT('tb') --保存表中的自增值

SET IDENTITY_INSERT tb ON --关闭自增

INSERT ..... --SQL操作

SET IDENTITY_INSERT tb OFF --启用自增

DBCC CHECKIDENT ('tb',RESEED,@pkid) --还原自增值


AcHerat 2011-03-19
  • 打赏
  • 举报
回复
记得插入完后 set identity_insert tb off
Shawn 2011-03-19
  • 打赏
  • 举报
回复
SET IDENTITY_INSERT table_name ON 
--1.可以插入任意id值
--2.一个会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON
INSERT INTO table_name(i_id, cexch_name) SELECT 2, N'美国'
--3.INSERT列中必须出现identity列
SET IDENTITY_INSERT table_name OFF --默认为OFF

--注意:新增的记录始终会在最后一行
AcHerat 2011-03-19
  • 打赏
  • 举报
回复

set identity_insert tb on

insert into tb(i_id,cexch_name....) values(4,N'美元'....)
AcHerat 2011-03-19
  • 打赏
  • 举报
回复

create table tb(id int identity(1,1))
go

set identity_insert tb on

insert into tb(id) values(2)
go

select id
from tb

set identity_insert tb off

drop table tb

/*

id
-----------
2
lantian_019 2011-03-19
  • 打赏
  • 举报
回复
怎么没人来呢,我想快点结贴啊!
AcHerat 2011-03-19
  • 打赏
  • 举报
回复

set insert_identity on

insert into tb(id,c1,c2) values(4,'a',123) --id是自增的。
  • 打赏
  • 举报
回复


新手,学习求解!

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧