在数据库中,用户注册信息根据需要存在不同的表里,表结构如下
登陆表 login
字段名:帐号account(varchar20), 密码 pwd(varchar20)
用户基本信息表
字段名:帐号account(varchar20),姓名 uname (varchar20), 性别 usex(char1),出生日期 birth (char8)...
两个表依靠 帐号account 关联
为了保证数据完整性和一致性,如何使用存储过程或事务进行处理?
本人以前没有使用过存储过程或事务,请大侠们尽可能的详细描述处理办法!
如果用到存储过程,最好给出!
另外,可不可以写一个存储过程,一次性向多个表插入多条记录?

解决方案 »

  1.   

    begintransrollbacktranscommittrans中间写SQL,不成功就调用rollbacktrans
      

  2.   

    CREATE PROCEDURE insertdata
    @參數1,
    @參數2,
    AS
    begin transaction
    insert 語句1///
    if @@error<>0
    goto rollbackTran
    insert 語句2
    if @@error<>0
     goto rollbackTran
    else 
     goto commintTran
    rollbackTran:
    rollback transaction
                  return
    commintTran:
    commit transaction
    GO
      

  3.   

    能不能结合ASP.NET 讲的具体些!
    谢谢....期待中
      

  4.   

    結合上面的,再在這個網址上看一下,基本就可以了..
    http://www2.flash8.net/teach/2554.htm
      

  5.   

    -------------------------------------------------------------------------------
    -- add_org
    -------------------------------------------------------------------------------
    CREATE PROCEDURE add_org

    @account  varchar(20)                ????
    @name           varchar(60)
    @contact        varchar(30)
    @contact_tel varchar(30)
    @contact_email varchar(30)
    @contact_addr varchar(80)
    @postcode char(6)
    @detail varchar(500)
    @start_time    varchar(20)
    @reg_time varchar(20)
    @manager varchar(30)
    @manager_tel varchar(30)
    @manager_email varchar(30)
    @org_site varchar(200)
    @password varchar(20)
     
    )
    AS
        
         DECLARE @id  int -- new user
         DECLARE @CurrentError int
         
         SET NOCOUNT ON     BEGIN TRANSACTION
        -- insert into the USERS table
       Insert [group]
    (account,[name],contact,contact_tel,
    contact_email,contact_addr,postcode,
    detail,start_time,reg_time, manager,
    manager_tel,manager_email,org_site)
    values(@account,@name,@contact,@contact_tel,
    @contact_email,@contact_addr,@postcode,
    @detail,@start_time,@reg_time, @manager,
    @manager_tel,@manager_email,@org_site)Insert [login]
    (account,[password])values(@account,@password)   SELECT @CurrentError = @@Error
        IF @CurrentError != 0
            BEGIN
                GOTO ERROR_HANDLER
            END
       COMMIT TRANSACTION   SET NOCOUNT OFF   SELECT @id = @@IDENTITY
       RETURN @id    ERROR_HANDLER:
            ROLLBACK TRANSACTION
            SET NOCOUNT OFF    
            RETURN 0
    GOSQLSEVER 报告???
    处有错
    帮忙看看
      

  6.   

    楼上的讲得很清楚了。
    CREATE PROCEDURE insertdata
    @參數1,
    @參數2,
    AS
    begin transaction
    insert 語句1///
    if @@error<>0
    goto rollbackTran
    insert 語句2
    if @@error<>0
     goto rollbackTran
    else 
     goto commintTran
    rollbackTran:
    rollback transaction
                  return
    commintTran:
    commit transaction
    GO
      

  7.   

    直接用APS.net调用存储过程就行了
      

  8.   

    用Asp.net调用存储过程可以的
    用Ado.net的事务处理也是可以的
    两个都简单,建议多看看MSDN