@@ -222,30 +222,57 @@ SET NOCOUNT, XACT_ABORT ON;
222
222
223
223
BEGIN TRANSACTION;
224
224
225
- CREATE TABLE # Update (FirstName varchar(50) NOT NULL, LastName varchar(50) NOT NULL);
225
+ /* **************************************************************
226
+ ** Create temp table to store the updates
227
+ ****************************************************************/
228
+ CREATE TABLE # Update (
229
+ FirstName varchar (50 ) NOT NULL
230
+ ,LastName varchar (50 ) NOT NULL
231
+ );
226
232
227
233
INSERT INTO # Update (FirstName, LastName)
228
- VALUES
229
- ( ' Kevin ' , ' Martin ' )
230
- , ( ' Jean-Luc ' , ' Picard ' );
234
+ VALUES ( ' Kevin ' , ' Martin ' )
235
+ ,( ' Jean-Luc ' , ' Picard ' );
236
+
231
237
238
+ /* **************************************************************
239
+ ** Perform Updates
240
+ ****************************************************************/
232
241
UPDATE
233
242
P WITH (UPDLOCK, SERIALIZABLE)
234
243
SET
235
244
P .FirstName = U .FirstName
236
245
FROM
237
- dbo .Person AS P
238
- INNER JOIN # Update AS U
239
- ON P .LastName = U .LastName ;
246
+ dbo .Person AS P
247
+ INNER JOIN # Update AS U ON P.LastName = U.LastName;
240
248
249
+
250
+ /* **************************************************************
251
+ ** Perform Inserts
252
+ ****************************************************************/
241
253
INSERT dbo .Person (FirstName, LastName)
242
254
SELECT
243
255
U .FirstName
244
256
,U .LastName
245
257
FROM
246
258
# Update AS U
247
259
WHERE
248
- NOT EXISTS (SELECT * FROM dbo .Person AS P WHERE P .LastName = U .LastName );
260
+ NOT EXISTS (
261
+ SELECT * FROM dbo .Person AS P WHERE P .LastName = U .LastName
262
+ );
263
+
264
+
265
+ /* **************************************************************
266
+ ** Perform Deletes
267
+ ****************************************************************/
268
+ DELETE
269
+ P
270
+ FROM
271
+ dbo .Person AS P
272
+ LEFT OUTER JOIN # Update AS U ON P.LastName = U.LastName
273
+ WHERE
274
+ U .LastName IS NULL ;
275
+
249
276
250
277
COMMIT TRANSACTION;
251
278
```
0 commit comments