2013-07-17 82 views
2

我有一个DB正在生产中,并且已被引入进行更改。一切顺利,除非我无法获得DELETE执行。我知道这是因为连接和不正确的参考。完整性等,但我无法真正改变这一点。 select语句没有问题,并显示在下面执行的GridView:寻找此Select语句的Delete语句

SELECT 
    [Stock Inventory].MaterialNumber, 
    [Stock Inventory].[Optimum Stock] AS Optimum_Stock, 
    customerservice.Part, 
    customerservice.SamplesRequired, 
    customerservice.Frequency, 
    customerservice.Country 
FROM 
    [Stock Inventory] 
    INNER JOIN customerservice 
    ON [Stock Inventory].MaterialNumber = customerservice.Part 

我期待使用删除链接是生成的表 的一部分,如果我没有提供足够的信息,请让我知道

+1

它应该是'DELETE小号 FROM [现货库存]为S INNER JOIN customerservice AS c ON s.MaterialNumber = c.Part' –

+0

错误。我会尽快查看,但这是返回的内容:DELETE语句与参考约束“FK_Stock Movement_Stock Inventory”冲突。冲突发生在数据库“WarehouseSamples”,表“dbo.Stock Movement”,“MaterialNumber”列中。 – JohnR

+0

三件事:你必须从哪个表中删除 - [库存]或customerservice?它们之间的关系是什么?这些表格和其他表格之间是否有关系? – OzrenTkalcecKrznaric

回答

0

既然你提到需要两个表中删除,你可以做这样的事情:

begin transaction 

declare @deleted table (MaterialNumber int) --whatever data type you need 
DELETE s 
output deleted.MaterialNumber into @deleted 
    from [Stock Inventory] as s 
    INNER JOIN customerservice as c 
    ON s.MaterialNumber = c.Part 


DELETE c 
from customerservice as c 
join @deleted d 
    on d.MaterialNumber = c.Part  

commit transaction 
+0

这使用删除的伪表来跟踪从[库存清单]表中删除的ID以便您可以从customerservice表中删除目标记录。根据您的参照完整性,您可能需要反转订单或设置级联删除等。 –