有三个基础表,用t1,t2,t1_t2表示吧
t1,t2存放的是项目和子项目,t1_t2是项目和子项目的关联表
一个项目可以包含多个子项目 例如:
t1:                
id   name 1     项目1
2     项目2t2: 
id  name
1    子项1
2    子项2
3    子项3
4    子项4t1_t2 :
t1id  t2id
1     1
1     2
2     3
2     4现在有个用户来选择项目,选择一个项目后,同时把这个项目包含的子项目与该用户关联起来
为此我建了2个表 暂且叫u1,u2 。u1存放的是用户选择的项目,u2存放的是该项目的子项例如用户选择了一个项目后,数据库中可能就存在如下数据:
u1:
id, uid, xiangmuid
1   1     1
u2:id   u1id   zixiangid
1     1       1
2     1       2
现在的问题就是如何实现我选择的时候只要选择项目就自动的把该项目包含的子项目也保存起来
也就是用一个存储过程实现上面保存u1 u2的操作
也就是为用户选择项目,把这条记录保存到u1中,同时存储过程会自动的把该项目包含的子项目和这次预约保存到u2中
其中u1 u2中的id都是自动增长的

解决方案 »

  1.   

    可能说的有些乱,大体的表结构可参考下面的图片其实我已经写了一点 就是剩下的部分不太会写
    CREATE PROCEDURE userselect
    -- Add the parameters for the stored procedure here
    (@zhxmid int,@u1id int output)AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;    -- Insert statements for procedure here
    insert into u1(uid,zhxmid) values (1,@zhxmid)
    select @u1id=@@identity
    --这里返回了插入到u1中的id ,下面应根据这个id执行插入u2的操作,因为这里要插入多条记录 sql我不会写
    END
    GO
      

  2.   

    通过查询t1_t2 ,再使用游标插入数据到u2
    declare cur_dr cursor for
    select t1id,t2id from t1_t2  where t1id=@id
    open cur_dr
    fetch next from cur_dr  into  @tmpid
    while (@@fetch_status=0 )
    begin 
     
    fetch next from cur_dr  into  @tmpid
    END
    close cur_dr
    deallocate cur_dr