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

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

有一两个表,是主从关系,表结构如下(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,不知有没有提供了相互间的操作??

请大家热列讨论!!!!
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿之殇 2003-08-23
  • 打赏
  • 举报
回复
我的建议就是呢,
新建一张表,
做为Id_contorl,
而把你那边的那个字段不要设为自增张,
每新增一条记录,要先在Id_contorl中将相应的ID加1,然后取出ID后再插入记录,
这样的话就可以避免并发的问题了。
这样做扩展性也好,
数据的移植和数据库的更改也会变得容易一些。

westbulls 2003-08-22
  • 打赏
  • 举报
回复
在前台程序中:
请在保存中进行以下设置:先保存table1,如果无错误,则取回@id=ident_current('table1'),用此@id更新table2,如果有错误,就删除table1中的id=@id的记录

饮水需思源 2003-08-22
  • 打赏
  • 举报
回复
用事务实现
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
begin tran
insert table1 ...
if @@error <> 0 ...
insert table2 (parentid,其它字段) select @@identity,其它内容
if @@error <> 0 ...
commit
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
begin tran
insert Table1 ...
if @@Error <> 0 ...
insert table2 (parentid,其它字段) select @@identity,其它字段
if @@Error <> 0 ...
commit

34,576

社区成员

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

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