我想做个多用户系统,数据库用SQL2000,前端用VB开发,用存储过程,但不知该如何才能保证每个用户的数据的一致性?如:我有二个表,一个表是订单表,一个是收货表,首先在订单表中输入订单资料,然后在收货表中输入对应于订单表中的收货资料,并且需把相对应的收货资料的数量总和写到订单表中去,并且收货总数量不能大于订单数量,那么在多人输入收货资料时,我该如何保证数据的一致性呢?请大家帮忙给点思路,谢谢大家!

解决方案 »

  1.   

    同意楼上
    使用存储过程 + 事物处理
    并且,建立日志文件,LOG数据库
      

  2.   

    实际上Select是不锁表的,只有Update,Insert,delete是锁表的
    一个使用事物的实例(存储过程)
    CREATE PROCEDURE SP_CLUB_GOMYCLUB
    @user_number int,
    @user_id varchar(20)
    AS
    BEGIN
    --设置存储过程的脱离时间
    SET LOCK_TIMEOUT 1800
    BEGIN TRANSACTION
    SELECT club_code,club_name FROM club_common_member WITH(NOLOCK) WHERE club_mem_n
    o = @user_number and club_mem_id =@user_id
    UNION
    SELECT club_code,club_name FROM club_game_member WITH(NOLOCK) WHERE club_mem_no 
    = @user_number and club_mem_id = @user_id
    UNION
    SELECT club_code,club_name FROM club_favor_member WITH(NOLOCK) WHERE club_mem_no
     = @user_number and club_mem_id = @user_id
    IF @@ERROR <> 0 OR @@ROWCOUNT = 0 
    BEGIN
    ROLLBACK TRANSACTION
    END
    ELSE
    BEGIN
    COMMIT TRANSACTION
    END
    END
    GO