Как выполнить ошибку множественной вставки Happend Вставленная таблица RollBack в хранимой процедуре SQL Server
Это мой код Как избежать ошибки при любом запросе, автоматический откат уже сохранен.
insert into muser(UserKey, Email, UserPassword)
values(@Key, @Useremail, 'test')
set @UserId = SCOPE_IDENTITY()
set @Key = NEWID()
insert into mUserProfile(UserProfileKey, UserId, UserEmail)
values(@Key, @UserId, @Useremail)
exec SP_Store @Useremail, @ClientId,
1 ответ
Ваш вопрос не очень ясен, но я думаю, что вы хотите что-то в этом роде.
begin transaction
begin try
insert into muser(UserKey,Email,UserPassword)
values(@Key,@Useremail,'test')
set @UserId= SCOPE_IDENTITY()
set @Key =NEWID()
insert into mUserProfile(UserProfileKey,UserId,UserEmail)
values(@Key,@UserId,@Useremail)
exec SP_Store @Useremail,@ClientId --You should avoid the SP_ prefix.
commit transaction
end try
begin catch
--Report the error here, do NOT silently rollback you transaction
rollback transaction
end catch
Это должно работать с одной оговоркой. Если у вас есть транзакция SP_Store, она не будет работать правильно, потому что вы не можете вкладывать транзакции в sql server.
Кроме того, вы действительно избегаете префикса SP_ или даже лучше избегаете префиксов полностью. http://sqlperformance.com/2012/10/t-sql-queries/sp_prefix