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.
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 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 Förresten - det luktar Visma om det här - kan det stämma? :)
@nders - Du har bra näsa :-)
Var tycker du att jag ska sätta in detta värde?
@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
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