I-Trigger für Insert so haben:SQL Server: Funktion funktioniert nicht in Trigger
ALTER TRIGGER [dbo].[trTblNameSetRefNo]
ON [dbo].[TblName]
AFTER INSERT
AS BEGIN
UPDATE TblName
SET RefNumber = dbo.GetNextRefNo(i.SomeField)
FROM TblName
INNER JOIN inserted i on i.ID = TblName.ID
END
Aber es funktioniert nicht. Wenn ich das RefNumber-Feld "hardcodieren", zum Beispiel: SET RefNumber = 'test'
, funktioniert es korrekt.
Auch wenn ich Funktion außerhalb des Abzugs nennen, bringen Sie es richtige Ergebnis.
Und das ist meine Funktion, die den Wert in Trigger zurückgeben muss:
ALTER FUNCTION [dbo].[GetNextRefNo]
(@ValueField INT)
RETURNS NVARCHAR(250)
AS
BEGIN
DECLARE @lastId INT;
DECLARE @result NVARCHAR(25);
DECLARE @CurrentIdentifier NVARCHAR(25);
SELECT TOP 1
@lastId = CAST(Substring(RefNumber, Charindex('-', RefNumber) + 4, Len(RefNumber)) AS INT) + 1
FROM
TblName
ORDER BY
ID DESC
IF @@ROWCOUNT < 1 --if empty table , set start number
BEGIN
SET @lastId = 1000
END
SELECT @CurrentIdentifier = 'SIT'
SET @result = @CurrentIdentifier + '-' + Substring (Cast(Year(Getdate()) AS NVARCHAR), 3, 2) + '-' + Cast(@lastId AS NVARCHAR)
RETURN @result
END
Irgendwelche Ideen, was ich falsch mache?
funktioniert die Funktion außerhalb eines Trigger funktioniert? – Squirrel
Was ist die Fehlermeldung? – ydoow
Ja, Funktion von außen funktioniert .. Ich glaube, ich Mantion es in meiner Frage: ‚Auch wenn ich Funktion außerhalb des Abzugs nennen, es richtiges Ergebnis zurück.‘ .. Ich erhalte keinen Fehler, ich weiß nicht, wie man Trigger auslöst oder so etwas? –