最後のステップでテーブルを削除する必要があるかどうかを判断できるように、いくつかのアクションをトランザクションにラップしようとしています。これが私がこれまでに持っているものです:
--select the DB
use DB1
--if the table exists, we want to delete it first
IF (EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'VV'))
BEGIN
drop table dbo.VV
END
BEGIN TRAN
SELECT field1
,field2
,field3
INTO dbo.vv
FROM vvr A
WHERE A.field1 <> 'GEN'
AND A.field2 <> 'NO DATA'
AND A.field3 <> '(BLANK) NO'
PRINT 'ROW1:' + CAST(@@ROWCOUNT as varchar(11))
IF @@ROWCOUNT = 0
ROLLBACK TRAN
ELSE
COMMIT TRAN
UPDATE dbo.vv
SET dbo.field1 = vvr.field1
FROM dbo.vv
PRINT 'ROW2:' + CAST(@@ROWCOUNT as varchar(11))
IF @@ROWCOUNT = 0
ROLLBACK TRAN
ELSE
COMMIT TRAN
トランザクションステートメントなしでこれを実行すると、問題なく実行されるため、SQL が機能することはわかっていますが、トランザクションステートメントを追加すると、テーブル VV が存在しないと通知されて失敗します。VVで選択すると、間違いなく消えます。
上記が正常に実行されるようになったら、テーブル vvr を削除するステートメントを最後にもう 1 つ追加しますが、まだそこまで行っていません。