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

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

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

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







...全文
30 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
谢谢大家的支持,我会陆续上传相关电子书 由于体积较大,本书分两卷压缩,请都下载完再解压! Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) http://download.csdn.net/source/3268312 内容简介   本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录类型、集合类型、对象类型、大对象类型)。   除了为读者提供编sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql初学者,也适合于有经验的oracle应用开发人员。 前言 第一部分 sql和pl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sql和pl/sql综述  第6章 简单查询  第7章 sql单行函数  第8章 操纵数据  第9章 复杂查询  第10章 管理常用对象 第三部分 pl/sql  第11章 pl/sql基础  第12章 访问oracle  第13章 编控制结构  第14章 使用复合数据类型  第15章 使用游标  第16章 异常处理 . 第17章 本地动态sql  第18章 pl/sql过程  第19章 pl/sql函数  第20章 pl/sql包  第21章 触发器  第22章 使用对象类型 第四部分 pl/sql系统包  第23章 使用大对象  第24章 读os文件  第25章 开发多媒体应用  第26章 开发web应用  第27章 dbms_sq动态sql  第28章 管理统计  第29章 使用数据库资源管理器  第30章 数据加密和解密  第31章 使用调度程序  第32章 使用flashback  第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 习题答案
谢谢大家的支持,我会陆续上传相关电子书 由于体积较大,本书分两卷压缩,请都下载完再解压! Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一) http://download.csdn.net/source/3268267 Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二) http://download.csdn.net/source/3268312 内容简介   本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录类型、集合类型、对象类型、大对象类型)。   除了为读者提供编sql语句和开发pl/sql块的方法外,本书还为应用开发人员提供了一些常用的pl/sql系统包。通过使用这些pl/sql系统包,应用开发人员可以开发出功能更强大的数据库应用程序。本书不仅适合sql和pl/sql初学者,也适合于有经验的oracle应用开发人员。 前言 第一部分 sql和pl/sql相关工具  第1章 在windows 平台上安装oracle database 11g  第2章 配置网络服务名  第3章 使用sql database  第4章 使用sql*plus 第二部分 sql  第5章 sql和pl/sql综述  第6章 简单查询  第7章 sql单行函数  第8章 操纵数据  第9章 复杂查询  第10章 管理常用对象 第三部分 pl/sql  第11章 pl/sql基础  第12章 访问oracle  第13章 编控制结构  第14章 使用复合数据类型  第15章 使用游标  第16章 异常处理 . 第17章 本地动态sql  第18章 pl/sql过程  第19章 pl/sql函数  第20章 pl/sql包  第21章 触发器  第22章 使用对象类型 第四部分 pl/sql系统包  第23章 使用大对象  第24章 读os文件  第25章 开发多媒体应用  第26章 开发web应用  第27章 dbms_sq动态sql  第28章 管理统计  第29章 使用数据库资源管理器  第30章 数据加密和解密  第31章 使用调度程序  第32章 使用flashback  第33章 使用重定义联机表  第34章 修正损坏块  第35章 使用日里民挖掘  第36章 使用管道  第37章 使用精细访问控制  第38章 使用精细审计  第39章 使用预警事件  第40章 转换rowid  第41章 其他常用包 习题答案

34,838

社区成员

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

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