webForumDet fria alternativet

Return multiple value?

26 svar · 3 122 visningar · startad av harry_boy · sida 2 av 2

harry_boyMedlem sedan feb. 2003193 inlägg
#21

Tack @nders för ditt tålamod.

I min demomiljö så fungerar det men när jag kör på den skrapa miljön så får jag nu:

Maximum stored procedure, function, trigger or view nesting level exceeded limit 32

Och jag har kontrollerat så att inga andra triggers ligger på ord.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#22

Triggern triggar sig själv när den ändrar raden ifråga, igen och igen, till den når 32 nivåer och stannar. Mer frihands-SQL, jag lade till en IF EXISTS-rad som ska kolla om ordern har "fel" URL och behöver uppdateras. Förhoppningsvi ska det funka. Det kanske finns något bättre sätt att göra det på.

CREATE TRIGGER [dbo].[FreightSearch] 
ON [DB1].[dbo].[Ord]

AFTER UPDATE
AS

BEGIN 
  SET NOCOUNT ON;

DECLARE @Web VARCHAR(260)

SELECT @Web = CONCAT(Stc.Ad4, inserted.OrdNo) 
FROM Stc 
JOIN inserted
ON Stc.StcNo = inserted.FrStc

IF EXISTS(
SELECT * FROM Ord
WHERE  (Ord.OrdNo = inserted.OrdNo AND Ord.TrTp = '1') AND Web <> @Web
)

BEGIN
  UPDATE Ord SET Web = @Web FROM inserted
  WHERE  Ord.OrdNo = inserted.OrdNo
  AND Ord.TrTp = '1'
END
   
END  
GO
@ndersMedlem sedan juni 200032 969 inlägg
#23

En idé (istället för att lägga in SQL-kod för att kontrollera) är att stänga av "recursive triggers" på databasen. Om man har rättigheter, förstås.

ALTER DATABASE MyDataBase SET RECURSIVE_TRIGGERS OFF
GO

mvh

@ndersMedlem sedan juni 200032 969 inlägg
#24

Förresten - det luktar Visma om det här - kan det stämma? :)

harry_boyMedlem sedan feb. 2003193 inlägg
#25

@nders - Du har bra näsa :-)

Var tycker du att jag ska sätta in detta värde?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#26

@nders skrev:

En idé (istället för att lägga in SQL-kod för att kontrollera) är att stänga av "recursive triggers" på databasen. Om man har rättigheter, förstås.

ALTER DATABASE MyDataBase SET RECURSIVE_TRIGGERS OFF
GO

Frågan jag spontant ställer mig är om det stänger av rekursiva anrop globalt och permanent, och kan skapa problem med annan kod som använder det.

@ndersMedlem sedan juni 200032 969 inlägg
#27

nitro2k01 skrev:

Frågan jag spontant ställer mig är om det stänger av rekursiva anrop globalt och permanent, och kan skapa problem med annan kod som använder det.

Det gör det, och det kan det. Tänkte'nte på det!

Kanske är det smartast att lägga in en kontroll i sin kod som nitro tidigare föreslog - eller möjligen leka lite med trigger_nestlevel() för att göra en snygg exit.

mvh

131 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)