请教!

fstao 2000-01-09 05:44:00
1、用MSSQL7建一表table1,有一个字段id1(类型为Int),如果设置Identity时,这样每增加一个数据
则id1自动增1。但我并不想设置Identity,有没有其它的方法,每增加一个数据则id1自
动增1?类似于Oracle那样,利用触发的方法使某个字段自动增1。

2、用Mssql7建一表table1,有一个字段field0(类型为char),其数据如下:
field0
a11
a12
a13

如何使字段field0的数据变为:
field0
a 1 1
a 1 2
a 1 3

如何写SQL语句?
...全文
1499 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyoujie 2000-01-28
  • 打赏
  • 举报
回复
另设一个表ID_CONTRAL,专门用以管理自动编号,只有一个字段(设为id1),一条记录(初始值可令其为1)
在需要自动增加ID的表(设为table1,其字段trans_id为int型,需自动加1)中建立Insert触发器,触发器内容为:
update table1 trans_id set =(select id1 from id_contral) where trans_id=0
update id set id1=id1+1
只要在插入时将trans_id的值赋为0
insert into table1 trans_id,values(0)
,即可实现trans_id自动增加.
只要在表ID_CONTRAL中加入更多的字段,即可用同样的方法管理其它表.
caili 2000-01-14
  • 打赏
  • 举报
回复

2. update xxx set f = substring(f, 1, 1) + substring(f, 2, 1) + ...
tiger 2000-01-10
  • 打赏
  • 举报
回复
建一个全局表
create table common_info(
name varchar(10),
value int)
insert into common_info values('msg_count', 0)
你的sql应该这么写(用存储过程):
create proc p_ins_alm_msg
@msg_count int out
as
select @msg_count = value from common_info where name = 'msg_count'
update common_info set value = @msg_count+ 1 where name = 'msg_count' and value = @msg_count
if @@rowcount = 0
return -1000
insert into table1 (field0)
values(@msg_count)
return 0
go

以上可以帮你搞定的.
另外, update common_info set value = @msg_count+ 1 where name = 'msg_count' and value = @msg_count
这句话可以防止多个连接同时调用该存储过程时出错. 一旦@msg_count不等于
value的值, 既说明有别的调用了该存储过程, 应返回error.

34,575

社区成员

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

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