有四个表:Packages: 主键PackageId
          Packages_Products_Suppliers:   PackageId , ProductSupplierId
          Products:  主键ProductId ,ProdName
          Products_Suppliers:主键ProductSupplierId,ProductId,SupplierId
除主键之外其它都是外键,现在我要从Products删除某个product,请问怎么写SQL语句?

解决方案 »

  1.   

    三种方式:
    1.把需要一起delete的写在一起
    2.把外键设为级联删除
    3.用触发器
      

  2.   

    这样写,有什么问题:
    delete from Products where ProductId in select p.ProductId from Products p inner join Products_Suppliers ps on p.ProductId=ps.ProductId inner join Packages_Products_Suppliers pps on ps.ProductSupplierId=pps.ProductSupplierId inner join Packages pa on pps.PackageId=pa.PackageId where pps.PackageId=pa.PackageId)
      

  3.   

    不带这么整的
    1.要删几个表,就得写几条delete语句
    2.要删某个产品,得有个参数吧?declare @productid int
    set @productid=101
    delete Products where productid=@productid
    delete Products_Suppliers where productid=@productid
    --...
      

  4.   

    我是从一个listBox中选出一个产品后,删除它,没有参数