1、应该有避免出错的方法。入A表的BID有对应B表ID的外键,可以
  IF EXISTS (SELECT * FROM B WHERE ID=1)
     INSERT A (...,BID) VALUES(...,1)
2、一般语言都有捕捉错误的功能,如VB:on error goto err_handle
  con.execute "insert a(...) values (...)"
  ...
  exit sub
err_handle:
  '错误处理

解决方案 »

  1.   

    1.sql中是@@error
    2。一般的程序语言都有错误信息功能的,象VB 可以通过
    ON ERROR GOTO 。
      

  2.   

    VC里使用ADO操作时可以使用try...catch的办法,SQL执行错都会进入到
    catch(_com_err)里
      

  3.   

    #include <sqlfront.h>
    #include <sqldb.h>int msg_handler (dbproc, msgno, msgstate, severity, msgtext, srvname,     procname, line)
    DBPROCESS           *dbproc;
    DBINT                msgno
    int                  msgstate
    int                  severity
    char                    *msgtext
    char                    *srvname
    char                    *procname
    DBUSMALLINT          line{
        printf ("SQL Server message %ld, state %d, "
            "severity %d: \n\t%s\n", msgno, msgstate, severity, msgtext);
        if (strlen (srvname) != 0)
            printf ("Server '%s', ", srvname);
        if (strlen (procname) != 0)
            printf ("Procedure '%s', ", procname);
        if (line !=0)
            printf ("Line %d", line);return (0);}
      

  4.   

    Private Sub ErrorLog()
    . . . 
    Dim errLoop As ADODB.Error
    . . . 
    ' Loop through each Error object in Errors collection.
    For Each errLoop In cn.Errors   Dim strError(5)
       Dim i As Integer
                   
       strError(0) = "Error Number: " & errLoop.Number
       strError(1) = "  Description: " & errLoop.Description
       strError(2) = "  Source: " & errLoop.Source
       strError(3) = "  SQL State: " & errLoop.SQLState
       strError(4) = "  Native Error: " & errLoop.NativeError
                    
       ' Loop through the five specified properties of Error object.
       i = 0
       Do While i < 5
          Form2.lstErrors.AddItem strError(i)
          i = i + 1
       Loop
                    
       Form2.lstErrors.AddItem ""
                
    Next 
                
    ' Create string for summary count of errors.
    c = cn.Errors.Count & " provider error(s) occurred."
                
    ' Display a count of the provider errors.
    Form2.lstErrors.AddItem c
    Form2.lstErrors.AddItem ""' Clear the Errors collection.
    cn.Errors.Clear
      

  5.   

    可以把错信息,写在触发器里,注意。c++是(16,1),PB(16.2)