Ich bin mir nicht ganz sicher, was Sie meinen, aber dies sollte Sie zumindest in die richtige Richtung führen
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
Sie sollte in etwa so lauten. Es gibt mehrere Möglichkeiten, das Problem zu lösen, also viel Spaß damit und hoffentlich hat das geholfen. Um es zu testen, schreibe zwei Select * From Users
Aussagen, eine vorher und eine nachher. Auch ändern Commit Transaction
a Rollback Transaction
Sie müssen also nicht befürchten, einen Fehler zu machen.
Lies die Frage noch einmal, ja, das geht nicht auf einen Schlag, man muss nur die Update
Anweisung mit
Insert Into Addresses (address_id, create_date, location, user_id)
Values ('@ddr355_1d', GetDate(), '1234theLocation', 123478)
und Sie müssen das für jeden einzelnen tun, aber das sollte bei nur 16 Einträgen in der Benutzertabelle einfach sein. Wenn Sie vorhaben, der Tabelle weitere Einträge hinzuzufügen, sollten Sie sich überlegen, eine Stored Procedure zu schreiben. Etwas wie dieses
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
Grundstruktur einer gespeicherten Prozedur. Ich würde eine if not exists
die aktualisieren statt einfügen würde, aber das sollte für den Anfang reichen. Ich hoffe, dass diese Beispiele einige Dinge für Sie klären und Ihnen helfen.