Date: Thu, 13 Sep 2001 15:24:31 +0900
From: Nobuyuki Hirashima <who@sub.example.com>
平嶋です。SQLServer/T-SQLの質問です。
テーブルの全行削除にtruncate tableを使って実験していました。
参考書やBooks Onlineを見る限り、truncate tableはロールバックできないと理
解していたのですが、実際にやってみるとロールバックできているようなのです。
そういうものなのでしょうか? それともコーディングの間違いでしょうか。
トランザクション中にtruncate tableを実行すると、たしかにテーブルの件数は
0になります。しかしトランザクションをロールバックすると元に戻っています。
ADOのトランザクションを使っても、同様の結果です。
ご意見いただければ幸いです。
環境はSQLServer7 SP3です。
who@sub.example.com
再現用スクリプト--------------------------------------------------
CREATE TABLE [testTable] (
[fname] [varchar] (50) NULL ,
[lname] [varchar] (50) NULL
) ON [PRIMARY]
go
insert into testTable values('test1', 'testname')
insert into testTable values('test2', 'testname')
begin tran
truncate table testTable
select 'truncated' as 状態, count(*) as 件数 from testTable
insert into testTable values('test3', 'testname')
rollback tran
select 'rolled back' as 状態, count(*) as 件数 from testTable
select * from testTable
実行結果(一部編集しました)---------------------------------
(1 件処理されました) --insert
(1 件処理されました) --insert
>トランザクション開始
状態 件数
--------- -----------
truncated 0
(1 件処理されました) --select
(1 件処理されました) --insert
>ロールバック
状態 件数
----------- -----------
rolled back 2
(1 件処理されました) --select
fname lname
-------------------------------------------------- --------------------------------------------------
test1 test1
test2 test2
(2 件処理されました) --select
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|