【发布时间】:2016-09-11 20:54:20
【问题描述】:
我有这样的插入触发器:
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
但它不起作用。当我“硬编码”字段 RefNumber 时,例如:SET RefNumber = 'test',它可以正常工作。
另外,当我在触发器之外调用函数时,它会返回正确的结果。
这是我必须在触发器中返回值的函数:
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
任何想法我做错了什么?
【问题讨论】:
-
该函数是否在触发器之外工作?
-
错误信息是什么?
-
是的,函数从外部工作。我想我在我的问题中提到它:'另外,当我在触发器之外调用函数时,它会返回正确的结果。 .. 我不知道
t receive any error , i dont 知道如何调试触发器什么的?
标签: sql-server triggers sql-function