Не совсем уверен, что вы имеете в виду, но это должно, по крайней мере, указать вам правильное направление
Begin Try
Begin Transaction
Update Users
Set Users.address = Address.address, create_date = GetDate()
From Addresses
Inner Join Users On Addresses.userid = Users.userid
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
Это должно быть что-то вроде этого.Есть несколько способов решить проблему, так что повеселитесь и, надеюсь, это помогло.Для тестирования напишите два Select * From Users
оператора, один до и один после.Также измените Commit Transaction
на Rollback Transaction
, чтобы вам не пришлось беспокоиться об ошибке.
Просто перечитайте вопрос: да, вы не можете сделать это за один раз, просто замените выражение Update
на
Insert Into Addresses (address_id, create_date, location, user_id)
Values ('@ddr355_1d', GetDate(), '1234theLocation', 123478)
, и вам придется сделать это для каждого из них, но это должно быть легко, только с 16 записями в таблице User.Возможно, вы захотите изучить написание хранимой процедуры, если планируете добавить больше в таблицу.Что-то вроде этого
Create Procedure [dbo].[AddressesInsertData]
(
@Address Int,
@Location varchar(100),
@UserId Int
)
As
Begin Try
Begin Transaction
Insert Into Addresses (address_id, create_date, location, user_id)
Values (@Address, GetDate(), @Location, @UserId)
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
Базовая структура хранимой процедуры.Я бы добавил туда if not exists
, который обновит вместо вставки, но этого должно быть достаточно, чтобы вы начали.Надеюсь, эти примеры помогут вам кое-что прояснить и помочь вам.