这样的需求该如何设计?合同表(ht), 材料表(MP),一条合同表记录对应多条材料表记录,材料表存在外键引用合同表的id,设计程序上 ,点"新建合同",进入新建合同页面,点击该页的保存按钮,向数据库中插入合同记录,但在用户没点击“保存”按扭之前,用户要先添加此合同的材料信息(可添加多条材料信息,即向材料表添加记录),
而此时合同的记录并不存在,所以不能添加材料信息,这样的需求如何解决???我的解决办法,在点击 “新建合同” 时就向合同表中插入一条合同记录,这样合同存在记录了,就可以随时添加材料了,但这样如果没有点击新建合同的保存按钮,确向合同表中插入了一条记录,显然这条记录是多余的,所以这个办法不理想,请各位指点应该如何设计,

解决方案 »

  1.   

    用户要先添加此合同的材料信息(可添加多条材料信息,即向材料表添加记录), 
    而此时合同的记录并不存在,所以不能添加材料信息,这样的需求如何解决??? 
    这样应该要用到触发器,INSTEAD OF,保存前进行判断
      

  2.   

    用触发器怎么能实现呢,你们的意思是在材料表上用instead of inserd触发器?这样做要在添加材料的窗口获取添加合同时的所有的字段参数,这样当用户保存材料时首先保存合同内容,再保存材料内容, 这样做也不合理首先如果添加的合同字段很多的话,在添加材料窗口获取很麻凡,我的这个合同就很多字段(多的要100多个字段),
    再有用户保存材料的之后仍然没有保存合同,那么这合同,和为合同表的记录和为此合同添加材料表的记录仍然应该是不存在的,因为用户没有点击保存合同按钮
      

  3.   


    用户要先添加此合同的材料信息(可添加多条材料信息,即向材料表添加记录), 
    而此时合同的记录并不存在,所以不能添加材料信息,这样的需求如何解决??? 
    ===================
    其实可以用事务,一次解决。
    begin Transaction mytran
    insert 合同 values ...
    insert 材料 values ...
    if(@@Error<>0)
    begin
     rollback my tran
     return
    end
    commit transaction mytran
      

  4.   

    材料表存在外键把外键去了。我做的基本上没做过外键。添加测试新闻时都要关联栏目挺烦人的(与你的性质一样)。后一直就不做外键。
    但可能会出现沉淀信息。后写个SQL清除下就行了。小系统加不加外键不有什么区别。
      

  5.   


    客户在加新闻时栏目是自己选。不选则不提交。如果是通过表单添加数据那不是很好控制吗。
    我以前是直接INSTRL数据才去外键。
    你通过表单添加资料,用下拉列表来选择隶属于哪个合同。并在页面上留一文本框。做随时添加合同。用AJAX POST/GET过去。再更新当前页面上的下拉列表。让客户可以选择。
      

  6.   

    添加材料是在添加合同的基础上添加的,而不是独自添加维护的材料,合同--材料 是主外键关系,
    添加合同 的表单中要列出添加的材料列表,连并添加按钮一起Iframe到添加表单 ,这样的办法可以独自更新添加合同表单的材料列表,而之前所添加的合同内容会保留
      

  7.   

    添加材料是在添加合同的基础上添加的,而不是独自添加维护的材料,合同--材料 是主外键关系,
    添加合同 的表单中要列出添加的材料列表,连并添加按钮一起Iframe到添加表单 ,这样的办法可以独自更新添加合同表单的材料列表,而之前所添加的合同内容会保留
    --------------
     不会发贴吧,错引用了
      

  8.   


    添加合同 的表单中要列出添加的材料列表,连并添加按钮一起Iframe到添加表单 ,这样的办法可以独自更新添加合同表单的材料列表,而之前所添加的合同内容会保留
    我不是说了吗?
    并在页面上留一文本框。做随时添加合同。用AJAX POST/GET过去。再更新当前页面上的下拉列表。让客户可以选择