这是我再查询分析器中的语句,本来以为没有多少数据的,但是没想到数据量还是瞒大的,结果更新很慢。有什么快点的方法吗?
update post set Post.ForumName=Forum.Forumid from post,forum where post.forumname=forum.forumname
以前forumname是存名字的,现在想存id了,所以一来就没有考虑这个数据类型的问题了,我想这个在更新的时候应该没有问题的吧。因为forumname 一开始是varchar型的,而id是int型的,int型存在varchar应该没问题吧?
  可能是数据量比较大的吧,执行了好几个小时都没有好,我怀疑是不是我的代码写错了?还是什么?
  不知道有没有更快点的方法吗?急

解决方案 »

  1.   

    DECLARE CURSOR_POST CURSOR FOR
    SELECT Forum.Forumid ,Forum.ForumName 
    FROM POST,FORUM
    WHERE POST.FORUMNAME = FORUM.FORUMNAME

    DECLARE @chrFORUMID VARCHAR,@chrFORUMNAME VARCHAR
    OPEN CURSOR_POST
             FETCH NEXT FROM CURSOR_POST INTO @chrFORUMID,@chrFORUMNAME 
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
    BEGIN TRANSACTION

    UPDATE POST
    SET
    FORUMNAME = @chrFORUMID 
    WHERE FORUMNAME= @chrFORUMNAME 
    IF @@ERROR <> 0
    BEGIN
    ROLLBACK
    CLOSE CURSOR_POST
    DEALLOCATE CURSOR_POST
    END
    COMMIT
    FETCH NEXT FROM CURSOR_POST INTO @chrFORUMID,@chrFORUMNAME 
    END
    CLOSE CURSOR_POST
    DEALLOCATE CURSOR_POST