怎么用一个存储过程实现删除两个表的内容,其中A,B表有主外键ID的关系。

解决方案 »

  1.   

    delete table wai  
    delete table nei
      

  2.   

    pubilc bool fun()
    {
            SqlConnection con = PublicClass.GetSqlConnection();
                SqlCommand com = new SqlCommand();            com.Connection = con;
                com.Transaction = con.BeginTransaction();
                try
                {
                    string delFlowParts = "delete 表1 WHERE id = " + id;
                    com.CommandText = delFlowParts;
                    com.ExecuteNonQuery();                string updFlowInfo = "delete from 表2  WHERE _ID = " + ID;
                    com.CommandText = updFlowInfo;
                    com.ExecuteNonQuery();
                    com.Transaction.Commit();
                    return true;
                }
                catch (Exception ee)
                {
                    com.Transaction.Rollback();                //写入错误表供调试用
                    string error = ee.Message.Replace("'", " ");
                    string strSqlError = "insert into Errors (Err_Desc, Err_Proc) values('" + error + "', '错误信息')";
                    PublicClass.ExecuteCommand(strSqlError);                return false;
                }
    }
      

  3.   

    delete from 主表 where ID=@iddelete from 表2 where 主表ID=@id(表2中与主表关联的ID为主表ID)不知道是不是这样,不然楼主把表字段发来看看
      

  4.   

    DELETE FROM 子表 WHERE 主檔ID=(SELECT ID FROM 主表 )
    DELETE FROM 主表 WHERE ID=@ID
      

  5.   


    begin tran
        declare @error int=0
        删除字表数据
        set @error=@@ERROR
        删除主表数据
        set @error=@@ERROR
    if(@error>0)
    begin
    rollback tran
    end
    else
    begin
    commit tran
    end  
      

  6.   

    如果A是主表的话 主檔ID是B表中的id与主表A相关的
      

  7.   

    从表的 dp_id 关联主表的ID
    create proc proc_delete
    @id int 
    as 
    begin tran
    declaer @error numeric(12,2)
    set @error=0
    delete from [从表名称] where dp_id=@id
    delete from [主表名称] where id=@idset @error=@@error
    if (@error<>0)
    begin 
    rollback tran 
    select 0
    end
    else 
    begin 
    commit tran 
    select 1
    end
    -
      

  8.   

    ls 的顶。。不过好像那个declare写错了