0
的我來到這裏相當於一箇中型清理查詢也不過是DELETE
陳述15行左右。我注意到,最後幾行,有時會由於FK參考約束,但是當我重新運行該查詢,剩餘的數據被刪除。我的研究讓我相信這是一個時間問題。每個語句後我卻無法添加GO
,因爲我的變量失去範圍...同步多個delete語句,而無需使用「GO」關鍵字
DECLARE @userOrders TABLE(OrderId INT)
DECLARE @userInventoryCatalog TABLE(InventoryId INT)
DECLARE @userSpotCheckRequests TABLE(SpotCheckRequestId INT)
INSERT INTO @userOrders
SELECT OrderId FROM [Order] WHERE UserId = @userId
INSERT INTO @userInventoryCatalog
SELECT InventoryId FROM [Inventory] WHERE UserId = @userId
INSERT INTO @userInventoryCatalog
SELECT SpotCheckRequestId FROM SpotCheckRequest WHERE InventoryId IN (SELECT
* FROM @userInventoryCatalog)
DELETE FROM ClientCustomerNotes WHERE ClientCustomerId IN (SELECT
ClientCustomerId FROM ClientCustomers WHERE UserId = @userId)
DELETE FROM InventoryShelveMapping WHERE InventoryId IN (SELECT * FROM
@userInventoryCatalog)
DELETE FROM UserBinAllocationLog WHERE UserId = @userId
DELETE FROM OrderMantoxTeaInventory WHERE MantoxTeaInventoryId IN (SELECT *
FROM @userInventoryCatalog)
DELETE FROM InventoryLog WHERE InventoryId IN (SELECT * FROM
@userInventoryCatalog)
DELETE FROM Analytics WHERE UserId = @userId
DELETE FROM SpotCheckRequestItems WHERE SpotCheckRequestId IN (SELECT * FROM
@userSpotCheckRequests)
DELETE FROM SpotCheckRequest WHERE InventoryId IN (SELECT * FROM
@userInventoryCatalog)
DELETE FROM UserNonReturnableItems WHERE InventoryId IN (SELECT * FROM
@userInventoryCatalog)
DELETE FROM InventoryBundleDefinition WHERE InventoryId IN (SELECT * FROM
@userInventoryCatalog)
DELETE FROM Inventory WHERE UserId = @userId
DELETE FROM [Log] WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderTracking WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderProperties WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderDimensions WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderAttachments WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderPicker WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderZenDesk WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderReprocessingQueue WHERE OrderId IN (SELECT * FROM
@userOrders)
DELETE FROM OrderPicker WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM OrderInformation WHERE OrderId IN (SELECT * FROM @userOrders)
DELETE FROM [Notification] WHERE UserId = @userId
DELETE FROM [TransactionPaymentLog] WHERE UserId = @userId
DELETE FROM [TransactionLog] WHERE UserId = @userId
DELETE FROM [Order] WHERE UserId = @userId
DELETE FROM UserContacts WHERE UserId = @userId
DELETE FROM ClientCustomers WHERE UserId = @userId
所以我的問題是:
我怎樣才能確保多條語句同步運行?
你確定表是按正確的順序,以避免外鍵的問題正在處理?是否有可能引發問題的觸發器,例如更新日誌表? SQL Server將按順序依次執行這些語句。 (你沒有標籤的問題爲適用於一個特定的數據庫。)有27'DELETE'陳述,除「15個左右的」有點多。 – HABO
對不起。它是MS SQL。任何一個我眼睛揉成一個嘿嘿。但是沒有沒有觸發器。我相信他們正在正常處理,因爲這曾經工作。它隨機失敗。似乎越多的數據越有可能失敗。當我第一次把這個當時只有幾百行來測試,現在有成千上萬的,它唯一的,現在這個問題已經穆斯特起來的。 – Adrian