sql server 流水号的问题

haoshiduomol 2007-05-27 10:17:59
最近做一个问卷调查,要把调查对象的回答输入数据库中,想弄个调查对象的流水号.上网一看头都大了,找到了下面这句话:
"可以把流水号保存到一个单独的表中,在真正追加数据时才更新最大流水号+1"
这样怎么实现呢?

我的库是这样建的
调查对象流水号 主键
题号 主键
答案
备注
...全文
760 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongbuniuzai 2009-11-18
  • 打赏
  • 举报
回复
AA07012000001 AA是传入的参数,可以代表类型,070120是年月日的简写,000001是自动生成的流水号,在添加一条记录的时候先获取当前表中的最大流水号:AA07012000001.substring(7)即获取纯流水号,然后最大的流水号+1 。当然保存的时候AA可以省略也可以作为参数传入,年月日是插入对象时的时间。不知说的对不去还请大家执教。
dongbuniuzai 2009-11-18
  • 打赏
  • 举报
回复
AA07012000001 AA是传入的参数,可以代表类型,070120是年月日的简写,000001是自动生成的流水号,在添加一条记录的时候先获取当前表中的最大流水号:AA07012000001.substring(7)即获取纯流水号,然后最大的流水号+1 。当然保存的时候AA可以省略也可以作为参数传入,年月日是插入对象时的时间。不知说的对不去还请大家执教。
dongbuniuzai 2009-11-18
  • 打赏
  • 举报
回复
AA07012000001 AA是传入的参数,可以代表类型,070120是年月日的简写,000001是自动生成的流水号,在添加一条记录的时候先获取当前表中的最大流水号:AA07012000001.substring(7)即获取纯流水号,然后最大的流水号+1 。当然保存的时候AA可以省略也可以作为参数传入,年月日是插入对象时的时间。不知说的对不去还请大家执教。
haoshiduomol 2007-07-12
  • 打赏
  • 举报
回复
首先谢谢大家.这阵子做课程设计去了,一直也没关注这里.让大家久等了.
每个答题的人都要做38个题,这个人的代号是要用流水号表示的.
我现在试试把流水号保存到一个单独的表中,每当插入的时候读取这个数,然后再+1存回表中这个方法.谢谢大家的启迪.
mugua604 2007-06-11
  • 打赏
  • 举报
回复
题号一定要到38才换流水号吗?
JamesCui 2007-06-11
  • 打赏
  • 举报
回复
可以把流水号保存到一个单独的表中,在真正追加数据时才更新最大流水号+1
------------------------------------------
还是比较容易实现的,需要注意
1、Transaction 的commit
2、如果数据量比较大,需要定义多个表来保存序列号,否则会造成数据表的频繁访问大致性能下降

你需要我给写一个
qegdgh 2007-06-09
  • 打赏
  • 举报
回复
欢迎加入新起点群,群号(37792189),本群为DELPHI与SQL SERVER 为主,
当然群里也有其它方面的专业人员
如(asp.net(C#),java等),现在程序员都不只学一门语言的哈,
本群是以一门程序语言为主打,多种语言为基点学习的群.

本群主要功能:
1:积极的讨论各种技术;
2:让你能结交更多的朋友,学习到更多先进的技术;
3:在你无聊的时候,群里更可以什么都聊聊(但得注意素质);

为了提高群的人上线要求;如果你有Q币的话,希望能够为群做一些贡献,并有机会成为本群的管理员.

Tayloryang11 2007-06-09
  • 打赏
  • 举报
回复
可以在程序端解决这个问题,写一个静态方法,TOP1上一个订单号,然后把字符串转换一下,再++,获得新的订单号
hui_hui_2007 2007-06-09
  • 打赏
  • 举报
回复
用计算列来实现呢?
zhuowei 2007-06-09
  • 打赏
  • 举报
回复
新增一个表 流水号表(流水号 INT) 初始值为200700100001

然后新增加一个人的问卷结果的时候,就先 select max(流水号) from 流水号表

然后新的这个人的流水号等于 查询出的流水号 + 1

存储过程写法如下:
DECLARE @FID INT
SELECT @FID = MAX(流水号) from 流水号表
SET @FID = @FID + 1

INSERT INTO 结果表
SELECT @FID ,题目.....
haoshiduomol 2007-06-08
  • 打赏
  • 举报
回复
谢谢楼上的朋友们,看不大懂,不过那个说用IDENTITY列的我到是弄了,不过现在有一个问题

就是
问卷对象流水号 biging 8 用的identity列 初始值为200700100001
题号 varchar15
答案 varchar8
备注 varchar200

问卷对象流水号与题号双主键

现在能插入数据,但是每插入一个记录问卷对象流水号都自加一,问卷一共38个题,所以完成一个人的答案录入,问卷对象流水号就已经到了38.

想问下有没有什么办法,能让他第一个人的38个题的问卷对象流水号都是
200700100001 即重复38次这个达到这个效果

问卷对象流水号 题号 答案 备注
200700100001 001 A
200700100001 002 B
... ... ...
200700100001 038 D
200700100002 001 A
200700100002 002 B
... ... ...

这样用触发器可以实现么?或者别的实现方法也可以,急啊.
gd4134 2007-05-28
  • 打赏
  • 举报
回复
CREATE PROCEDURE [dbo].[SSNGeneratorInstre]
@SSNType varchar(100),@CurrentValue int OUTPUT
AS
update SSNGenerator set CurrentValue = CurrentValue+1 where SSNType = @SSNType

select @CurrentValue=CurrentValue from SSNGenerator where SSNType = @SSNType
51Crack 2007-05-27
  • 打赏
  • 举报
回复
自动增长得了
lzhcxc 2007-05-27
  • 打赏
  • 举报
回复
identity列
haoshiduomol 2007-05-27
  • 打赏
  • 举报
回复
谢谢各位

34,590

社区成员

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

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