热烈讨论:关于主从表增加数据的问题

onways2008 2003-08-22 09:05:28
热烈讨论:关于主从表增加数据的问题

有一两个表,是主从关系,表结构如下(SQL Server):

Table1(id int,name1 char(10));
Table2(parentid int,name2 char(10));

其中id是自动增加的,parentid是同id对应的。

在一个表单中,那么该如何同时增加数据呢?
讨论的问题在于Table2如何获得parentid?

(1)先增加table1,再获取它的最大值作为Table2的parentid值。
(2)建立Table2的触发器,当新增时就将table1中的id最大值作为parentid值。

上述两种方法在单机用时应该不会存在太大问题,但当网络中同时操作时,理论上它获得的id最大值可能并非用户想要的值,而是另一用户新增的记录,这个问题有什么好的方法解决呢?

.net由于提供了dataset,不知有没有提供了相互间的操作??

请大家热列讨论!!!!
...全文
29 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhongfei 2004-03-01
  • 打赏
  • 举报
回复
用一个变量保存开始增加的id不行么
qiaocm 2004-02-25
  • 打赏
  • 举报
回复
要是遇到多用户改怎么解决,比如说是在网络上,上千个用户
zxbyhcsdn 2003-08-22
  • 打赏
  • 举报
回复
呵呵!
先建立一个表,来存放最大的ID(比如说我做一个商业自动化系统,那些订单,入库单,配送单,退货单)
然后再写一个存储过程来自动产生ID

--//自动产生单号
CREATE PROCEDURE CreateBillNo
@Djlxh varchar(3), --单据类型号
@Danhao varchar(7) output --产生的单号

AS
Declare @DanQianDH varchar(7)
Declare @tmpDH varchar(8)
Declare @tmpintDH int

SELECT @DanQianDH=c_dqdjh --当前单据号
FROM t_pszxdhb --配送中心单号表
WHERE c_djlxh=@Djlxh

set @tmpDH='1'+@DanQianDH
set @tmpintDH=Convert(int,@tmpDH)
set @tmpintDH=@tmpintDH+1
set @tmpDH=Convert(varchar(8),@tmpintDH)

set @Danhao = right(@tmpDH,len(@tmpDH)-1)

--//修改数据库
UPDATE t_pszxdhb --配送中心单号表
SET c_dqdjh = right(@tmpDH,len(@tmpDH)-1) --当前单据号
WHERE c_djlxh=@Djlxh --单据类型号
GO
Montaque 2003-08-22
  • 打赏
  • 举报
回复
存储过程。
sualtring 2003-08-22
  • 打赏
  • 举报
回复
讨论什么呀 ? 就是及联更新及联删除
danfree 2003-08-22
  • 打赏
  • 举报
回复
SELECT @@IDENTITY AS 'Identity'
用在insert语句过后,查出该表的种子列

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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