2013-07-17 113 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表中刪除目標記錄。根據您的參照完整性,您可能需要反轉訂單或設置級聯刪除等。 –