Я хочу установить значение по умолчанию для столбца Id
в таблице Person
с функцией, которая выглядит следующим образом:
Функция:
IF OBJECT_ID ( 'GetLastId','FN') IS NOT NULL
DROP function GetLastId;
GO
CREATE FUNCTION [dbo].[GetLastId]
(@TableName nvarchar(max))
RETURNS int
AS
BEGIN
DECLARE @LastId int;
DECLARE @sql nvarchar(max);
SET @sql = 'SELECT @LastId = ISNULL(MAX(Id), 0) + 1 FROM ' + @TableName + ';'
EXECUTE sp_executesql @sql, N'@LastId int output', @LastId = @LastId output;
RETURN @LastId
END
, а затем:
UPDATE Person
SET Id = dbo.GetLastId('Person')
Запуск этого кода приводит к ошибке:
Из функции могут быть выполнены только функции и некоторые расширенные хранимые процедуры.
Так как исправить это и заставить его работать как значение по умолчанию?
И, пожалуйста, не говорите «Использовать триггеры ...», поскольку я намерен использовать его с Entity Framework Core в качестве значения по умолчанию для первичных ключей.
Спасибо