没道理啊!
如果表没被锁定,怎么sql语句会被挂起呢?
搂主如何确定表未被锁定的呢?

解决方案 »

  1.   

    看看你是不是在别的地方做了什么操作搞锁了,比如说insert update 什么的
      

  2.   

    我也遇到了同样的情况,代码如下:
    void CNnDlg::OnButtonDeljpg() 
    {
    // TODO: Add your control notification handler code here
    CString str1;
    m_jpg_view.GetText(m_jpg_view.GetCurSel(),str1); CJPGSet deljpg; m_pDB=new CDatabase;
             m_pJPGQviewSet=new CJPGSet(m_pDB);
            if(m_pJPGQviewSet->IsOpen())
    {
    m_pJPGQviewSet->Close();
    }
    m_pJPGQviewSet->Open();
    if( !m_pJPGQviewSet->CanRestart( ) )
    return;    // Unable to requery
    if( !m_pJPGQviewSet->Requery( ) )   //重新查询
    // Requery failed, so take action
    return; deljpg.Open(AFX_DB_USE_DEFAULT_TYPE,"select * from JPG_QVIEW WHERE ID_QVIEW ="+str1);
      
    AfxMessageBox(deljpg.m_ID_QVIEW);

    deljpg.Delete();

    deljpg.Close();
    AfxMessageBox("编号为"+str1+"的JPG记录已经删除!"); m_jpg_view.ResetContent();
    OnButtonJpg();
    }
    运行到deljpg.Delete(); 就抛出异常了,显示的信息是:“更新或删除未涉及任何数据行‘
    但是这条记录可以被AfxMessageBox()显示出来,证实记录集不是空的,不知道是什么问题。
      

  3.   

    popoxx你这种情况可以直接到数据库中删除一下,看否可以!
    我这种问题好像真的很难解决,曾经问过高手,说不知道怎么解决
      

  4.   

    把这个表和其他有约束关系的表作成临时表,试验删除,看看alertlog。
    看看统计值,包括表空间、回滚段、cache的,应该不会是这些问题。
    会不会有递归,造成死循环?
      

  5.   

    看看表上有没有外键,触发器
    在delete操作被阻塞时再去看一下锁的情况
      

  6.   

    你肯定有备份吧,truncate试试
      

  7.   

    有阻塞当然就有锁了察看V$lock,V$locked_object等视图
      

  8.   

    把那个不能删除的表的触发器都禁用吧:ALTER TABLE TABLENAME DISABLE ALL TRIGGERS