-2
ALTER TRIGGER [dbo].[DEL_RouteStops_CatalogID]
ON [dbo].[RouteStops]
AFTER DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @rowcount int
DECLARE @rowsexist bit
SET @rowcount = (SELECT COUNT(a.RouteStopID) FROM RouteStops a, deleted d WHERE a.StopCIXID = d.StopCIXID)
IF (@rowcount > 0)
BEGIN
SET @rowsexist = 'true'
**SUPPOSEDLY THE BELOW LINE RETURNS MORE THAN 1 RESULT?!**
IF @rowsexist = 'true'
BEGIN
UPDATE LocationCatalog
SET NextSubmitDate = (SELECT MIN(a.UD5) FROM RouteStops a, deleted d where a.StopCIXID IN (d.StopCIXID))
FROM RouteStops a, LocationCatalog b, deleted d
WHERE b.RouteStopID = d.RouteStopID
UPDATE LocationCatalog
SET SubmitDay = (SELECT a.Route FROM RouteStops WHERE UD5 = (SELECT MIN(a.UD5) FROM RouteStops a, deleted d where a.StopCIXID = d.StopCIXID)),
NextPickDate = (SELECT dateadd(D, a.UD2, b.NextSubmitDate) FROM RouteStops a, deleted d where a.StopCIXID IN (d.StopCIXID)),
NextDeliveryDate = (SELECT dateadd(D, a.UD3, b.NextSubmitDate) FROM RouteStops a, deleted d where a.StopCIXID IN (d.StopCIXID))
FROM RouteStops a, LocationCatalog b, deleted d
WHERE b.RouteStopID = d.RouteStopID
END
END
END
我看不到問題。 – Bulat 2014-09-11 10:05:39
不是*應該*。它確實如此,SQL Server不會查看查詢,並且*認爲它將返回多行。它執行它,它**實際上**返回多行。你需要通過子查詢並找出哪一個能夠解決這個問題。 – 2014-09-11 10:06:59
此外,你可能會重寫這個,根本不使用子查詢。您仍然需要刪除重複項目,但「RouteStops」可能是罪魁禍首 - 或者結果可能不是您想要的。但是,你沒有提供足夠的信息來幫助你。 – 2014-09-11 11:54:37