我试图创建一个函数,根据它的bookType更新返回值。借书时应触发此功能。
这就是我现在所拥有的。
CREATE FUNCTION dbo.ufn_BReturn_date(@Book_ID int)
RETURNS DATE
AS
BEGIN
DECLARE @Return_date DATE;
DECLARE @bookType INT;
SELECT @BookType = b.BookType
FROM Book b
WHERE b.Book_ID = @Book_ID;
IF (@BookType = 1)
SET @Return_date = DATEADD(MONTH, 2, cast(CURRENT_TIMESTAMP as date))
ELSE IF (@BookType = 2)
SET @Return_date = DATEADD(MONTH, 3, cast(CURRENT_TIMESTAMP as date))
ELSE
SET @Return_date = cast(CURRENT_TIMESTAMP as date)
RETURN @Return_date
END;
答案 0 :(得分:0)
你做不到。 SQL Server中的FUNCTION
严格限制为只读操作,因此您甚至无法EXEC
来自函数(third-party hacks notwithstanding)的sproc。
你想要的是TRIGGER ON UPDATE
。
答案 1 :(得分:0)
如果您需要更新现有行中的值,请执行以下操作:
update Book
set Return_date =
dateadd(month, case BookType when 1 then 2 when 2 then 3 else 0 end, current_timestamp)
where Return_date is null; -- ??
您当然可以在Loan
表格或适当的地方的触发器中添加类似的更新。