-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