这样的SQL怎么写,谢谢了!

Rayphrank 2003-05-26 09:27:37
这样一张表
ID 档案号 。。。
1 H0001 。。。
2 H0002 。。。
3 H0003 。。。
4 H0004。。。

客户要求档案号是可以插入的,即
假如表中现在有了4条记录,档案号如上,现在客户要在档案号为H0003的记录前加一条记录,新加入记录的档案号为H0003,而原来的档案号为H0003记录,它的档案号则变成H0004,以下的记录依此类推,就好像档案号是自动编号一样,

这样的修改SQl怎么写阿,有没有好的办法,能让这样的修改速度很快(记录很多)







...全文
26 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyFor 2003-05-27
  • 打赏
  • 举报
回复
你这样的档案号没有意义,能不能用另一字段来控制其顺序,但档案号不一定是这个顺序,

如果你的档案号一直在变,那档案号这个字段存在的意义真是不大。
Rayphrank 2003-05-27
  • 打赏
  • 举报
回复
OK,大力还有很多其他朋友的方法可行,待会给各位分数,

我的程序是这样的,
表名是资料表,每种资料都有一个档案号,档案号是根据表中记录的数量自动产生,档案号的格式在客户那有规定,比如前缀H什么的,只要资料进库,档案号就确定下来,我程序一开始也是这样设计的,只要记录进库,档案号就不能改动了,但客户提出,如果我输了很多资料进去,忽然发现,前面少了一条资料,而且这条资料只能加在前面,那怎么办?

其实我知道这种像各位的处理方法效率不太高,如果有十万条记录,恰好要在第一条记录前插一条记录,那就要修改九万九千九百九十九条记录了,各位有没有别的数据库结构的设计方法??

像这样的情况应该怎样设计数据库?才能使插入或者修改,删除(如果我把前面的资料删除,后面资料的档案号也要更改)的效率高

fyg_02971 2003-05-27
  • 打赏
  • 举报
回复

create trigger tr_insert on table
for insert
as
BEGIN
begin trans
update table set 档案号='H'+right('0000'+cast(right(档案号,4)+1 as varchar(4),4) where 档案号>=@新档案号
insert 表 values(@新档案号,.....)
commit trans
END
ydzqw 2003-05-27
  • 打赏
  • 举报
回复
good
joygxd 2003-05-27
  • 打赏
  • 举报
回复
create trigger tr_insert table
for insert
as
if exists( select 档案号 from table where 档案号=inserted.档案号)
update table set 档案号='H'+cast(right(档案号,4)+1 as varchar(4)) where 档案号>=inserted.档案号


lvcheng606717 2003-05-27
  • 打赏
  • 举报
回复
我觉得可以从新定义档案号的格式,按照所需的方式排序,自动产生增加时通过
触发器来实现。
BBQ 2003-05-26
  • 打赏
  • 举报
回复
支持大力的,真够快的
create procedure InsertDocumentID(@newID varchar(10)) as
BEGIN
begin trans
update DOCTable set DocID='H'+right('0000'+cast(right(档案号,4)+1 as varchar(4),4) where 档案号>=@新档案号
insert 表 values(@新档案号,.....)
commit trans
END
homeness 2003-05-26
  • 打赏
  • 举报
回复
大力的方法很好
可以去试一下
pengdali 2003-05-26
  • 打赏
  • 举报
回复
declare @新档案号 char(5)
set @新档案号='H0003'

begin tran
update 表 set 档案号='H'+right('0000'+cast(right(档案号,4)+1 as varchar(4),4) where 档案号>=@新档案号
insert 表 values(@新档案号,.....)
commit tran
yll6865 2003-05-26
  • 打赏
  • 举报
回复
触发器解决此问题比较合适,做一个更新触发器试试效果吧
ydzqw 2003-05-26
  • 打赏
  • 举报
回复
gz

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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