Я просто хочу хранимую процедуру, которая вычисляет уникальный идентификатор (который отделен от столбца идентификаторов) и вставляет его. Если это не удается, он просто вызывает себя, чтобы восстановить указанный идентификатор. Я искал пример, но не могу найти один, и я не уверен, как я должен заставить SP вызывать себя, и установить соответствующий выходной параметр. Я также был бы признателен, если бы кто-то указал, как также проверить этот SP.
Редактировать
Теперь у меня есть следующее предложение (заметьте, у меня уже есть столбец идентификаторов, мне нужен дополнительный столбец идентификаторов.
ALTER PROCEDURE [dbo].[DataInstance_Insert]
@DataContainerId int out,
@ModelEntityId int,
@ParentDataContainerId int,
@DataInstanceId int out
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
WHILE (@DataContainerId is null)
EXEC DataContainer_Insert @ModelEntityId, @ParentDataContainerId, @DataContainerId output
INSERT INTO DataInstance (DataContainerId, ModelEntityId)
VALUES (@DataContainerId, @ModelEntityId)
SELECT @DataInstanceId = scope_identity()
END
ALTER PROCEDURE [dbo].[DataContainer_Insert]
@ModelEntityId int,
@ParentDataContainerId int,
@DataContainerId int out
AS
BEGIN
BEGIN TRY
SET NOCOUNT ON;
DECLARE @ReferenceId int
SELECT @ReferenceId = isnull(Max(ReferenceId)+1,1) from DataContainer Where ModelEntityId=@ModelEntityId
INSERT INTO DataContainer (ReferenceId, ModelEntityId, ParentDataContainerId)
VALUES (@ReferenceId, @ModelEntityId, @ParentDataContainerId)
SELECT @DataContainerId = scope_identity()
END TRY
BEGIN CATCH
END CATCH
END