Как выполнить ошибку множественной вставки 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

Другие вопросы по тегам