MSDE FunClub | 最終更新日 : 2000/08/21 | |
Microsoft Data Engine FunClub |
|
|
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻) | ||
【第8章497p 〜 498p掲載】 |
-- [SQL08_08R.SQL] -- SQLServer7.0 Transact-SQL言語 -- 日本技術ソフト開発 堀川 明 -- http://www.horikawa.ne.jp/msde/ -- -- このSQLプログラムは、 -- トランザクションの未コミット読み取り(READ UNCOMMITTED) -- を理解します -- テーブルから未コミットデータを読み込む例題です -- -- -- カレントデータベースを MySampleTest にする USE MySampleTest GO -- (件処理されました)のメッセージを抑止する SET NOCOUNT ON GO -- トランザクションの分離レベルの設定 -- 未コミット読み取り モードです SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED GO -- ********************************************* -- 未コミット状態のテーブルからデータを読み取る -- ********************************************* DECLARE @CNT int , @TOTAL int SET @CNT = 0 PRINT '' -- トランザクション開始 BEGIN TRANSACTION WHILE( @CNT <> 3 ) BEGIN SET @CNT = @CNT + 1 -- SUM_TABLEテーブルから読み出し操作を実行する -- 読み出されたデータは、未コミット状態 SELECT @TOTAL = SUM(NUMBER) FROM SUM_TABLE WHERE( NUMBER BETWEEN 0 AND 100 ) IF( @TOTAL IS NULL ) BEGIN RAISERROR('回数=%2d その値=NULL',0,1,@CNT) WITH NOWAIT END ELSE BEGIN RAISERROR('回数=%2d その値=%d',0,1,@CNT,@TOTAL) WITH NOWAIT END PRINT '' -- 1回読み出したら15秒待機 -- 15秒に特別な意味はないが、最終回の読み取り時にROLLBACKが行われる WAITFOR DELAY '00:00:15' END COMMIT TRANSACTION RAISERROR('End. 計算結果を比較しましょう',0,1) WITH NOWAIT GO -- 標準モードに戻す SET TRANSACTION ISOLATION LEVEL READ COMMITTED GO