社区
MS-SQL Server
帖子详情
主键ID是主动编号,我想在记录为10的记录 后面插入一条记录,不知道怎么做?
rayofdawn
2003-05-16 02:29:33
...全文
58
19
打赏
收藏
主键ID是主动编号,我想在记录为10的记录 后面插入一条记录,不知道怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happydreamer
2003-05-17
打赏
举报
回复
To rayofdawn ()
不好意思,没把思路写清楚,抱歉,以后注意
To HawaiiLeo(罗马数字)
不行, 不行, 不要这么称呼,水平还很差,其实这个方法也很笨的
看看各位还有什么好的解决方法
iainet
2003-05-17
打赏
举报
回复
如果现在记录是10的话,自动为11
如果小于10,用set identity_insert on,然后insert
如果已经大于10,可以将10后的依次向后移动!就是小黑说的!
select * into #temp from table
update table
set col1=a.col1,col2=a.col2
from (select * from #temp) a
where table.id>10 and a.id=a.id+1
pqc4391
2003-05-17
打赏
举报
回复
有必要吗?SQL里面对记录的具体顺序好象没什么要求,重要是索引建立.
doudouniwan
2003-05-17
打赏
举报
回复
SET IDENTITY_INSERT table on
insert into table (11,...)
SET IDENTITY_INSERT table off
a1n1
2003-05-16
打赏
举报
回复
mark1
HawaiiLeo
2003-05-16
打赏
举报
回复
聚集索引就是你插入数据的时候,数据库会自动给你排序。
如下:其中ID是聚集索引
ID name
1 tony
3 Leo
5 michel
你插入记录(2, 'jeck')
ID name
1 tony
2 jeck
3 Leo
5 michel
HawaiiLeo
2003-05-16
打赏
举报
回复
小黑大侠已经说清楚了。
--CLUSTERED是保证这个索引是聚集索引
CREATE CLUSTERED INDEX indexname on table(column)
SELECT * into #t FROM table
UPDATE table
SET col1=a.col1,col2=a.col2..
FROM
( SELECT * FROM #t) a
WHERE table.id = #t.id + 1 and table.id > 11 --使原11至以后的记录都加一
--然后插入id=11的记录 和原表的最后一条记录
INSERT INTO talbe (col1,col2...) SELECT col1,col2 .. FROM #t ORDER BY id DESC
rayofdawn
2003-05-16
打赏
举报
回复
11原来已有数据了,
怎么“要插入的字段的ID设置为11,
而11以后的ID全加一。”?
CrazyFor
2003-05-16
打赏
举报
回复
如果最大是10,会自动插入11
如果11空缺
可以用
SET IDENTITY_INSERT table on
insert into table (11,...)
SET IDENTITY_INSERT table off
而且你必须把ID字段设置为聚集索引
rayofdawn
2003-05-16
打赏
举报
回复
不大明白。
happydreamer
2003-05-16
打赏
举报
回复
CREATE CLUSTERED INDEX indexname on table(column)
SELECT * into #t FROM table
UPDATE table
SET col1=a.col1,col2=a.col2..
FROM
( SELECT * FROM #t) a
WHERE table.id=#t.id+1 and table.id>11
然后插入id=11的记录 和原表的最后一条记录
INSERT INTO talbe (col1,col2...) SELECT col1,col2 .. FROM #t ORDER BY id DESC
rayofdawn
2003-05-16
打赏
举报
回复
up
rayofdawn
2003-05-16
打赏
举报
回复
HawaiiLeo(罗马数字)
怎么使用聚集索引?
19191919
2003-05-16
打赏
举报
回复
补充:
如果11空缺
可以用
SET IDENTITY_INSERT table on
insert into table(自动编号字段(列)不可缺少,必须列出)
values(11,...)
SET IDENTITY_INSERT table off
rayofdawn
2003-05-16
打赏
举报
回复
问题是11不是空缺的。
psxfghost
2003-05-16
打赏
举报
回复
直接insert就是第十一条了啊!
如果你的字段是自动增长的话
caiyunxia
2003-05-16
打赏
举报
回复
SET IDENTITY_INSERT
允许将显式值插入表的标识列中。
语法
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
参数
database
是指定的表所驻留的数据库名称。
owner
是表所有者的名称。
table
是含有标识列的表名。
caiyunxia
2003-05-16
打赏
举报
回复
如果最大是10,会自动插入11
如果11空缺
可以用
SET IDENTITY_INSERT table on
insert into table (11,...)
SET IDENTITY_INSERT table off
HawaiiLeo
2003-05-16
打赏
举报
回复
我认为(水平有限):
能插,但不在记录11,
除非你把ID字段设置为聚集索引,
而且使用触发器,在插入时把要插入的字段的ID设置为11,
而11以后的ID全加一。
Sql
插入
记录
返回
主键
id
有时候,我们的
主键
id
是自动生成的,然后
想
要
插入
记录
后,就取得这条
记录
的
id
,怎么
做
呢? 比如我现在的一个student表的字段为:
id
(PK autoIncrement), name, school, tel, password。这五个,现在我要
插入
一条
记录
...
【MySQL用法】MyBatis 多对多 中间表
插入
数据,添加
记录
后获取
主键
ID
有一个很常见的需求,即添加
记录
后获取添加后的
主键
ID
,特别是在一次前端调用中需要
插入
多个表的场景。除了添加单条
记录
时获取
主键
值,有时候可能需要获取批量添加
记录
时各
记录
的
主键
值,MyBatis从3.3.1版本开始支持...
Java MyBatis
插入
数据库返回
主键
id
最近在搞一个电商系统中由于业务需求,需要在
插入
一条
产品信息后返回产品
Id
,刚开始遇到一些坑,这里
做
下笔记,以防今后忘记。 类似下面这段代码一样获取
插入
后的
主键
User user = new User(); user....
数据库
插入
数据返回当前
主键
ID
值方法
当我们
插入
一条
数据的时候,我们很多时候都
想
立刻获取当前
插入
的
主键
值返回以
做
它用。我们通常的
做
法有如下几种: 1. 先 select max(
id
) +1 ,然后将+1后的值作为
主键
插入
数据库; 2. 使用特定数据库的 auto_...
七种MYSQL
插入
数据后返回自增
主键
ID
的方法
mysql和oracle
插入
的时候有一个很大的区别是,oracle支持序列
做
id
,mysql本身有一个列可以
做
自增长字段,mysql在
插入
一条
数据后,如何能获得到这个自增
id
的值呢? 1、使用last_insert_
id
SELECT LAST_IN..
MS-SQL Server
34,576
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章