MSDE FunClub 現在までのアクセスカウント数 最終更新日 : 2000/08/21
Microsoft Data Engine FunClub
Since 2000.08.21
SQLServer7.0/MSDE 完全トレーニングテキスト(上巻)
【第8章508p 〜 510p掲載】

-- [SQL08_11R.SQL]
--             SQLServer7.0  Transact-SQL言語
--             日本技術ソフト開発  堀川 明
--            http://www.horikawa.ne.jp/msde/
--
-- このSQLプログラムは、
--      トランザクションの直列化(SERIALIZABLE) 
-- を理解します
--

-- カレントデータベースを MySampleTest にする
    USE MySampleTest
GO

-- (件処理されました)のメッセージを抑止する
    SET NOCOUNT ON
GO

-- トランザクションの分離レベルの設定
-- 直列化(SERIALIZABLE) モードです
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO


-- *********************************************
--      テーブルからデータを読み取る
-- *********************************************
    DECLARE @CNT int , @TOTAL int
    PRINT ''
    SET @CNT = 0
 
    -- トランザクション開始
    BEGIN TRANSACTION
        WHILE( @CNT <> 3 )
           BEGIN
                 SET @CNT = @CNT + 1

                 -- 読み出し操作を実行する
                 -- コミット済みデータが読み出される
                 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秒に特別な意味はないが、2or3回の読み取り時にINSERTが行われる
                 WAITFOR DELAY '00:00:15'
            END
    COMMIT TRANSACTION
GO

-- データ挿入側クエリが動作するので、もう一度合計を計算してみる
    DECLARE @TOTAL int
    SELECT @TOTAL = SUM(NUMBER) FROM SUM_TABLE
                 WHERE( NUMBER BETWEEN 0 AND 100 )
    RAISERROR('COMMIT後の計算 その値=%d',0,1,@TOTAL) WITH NOWAIT
GO

-- 標準モードに戻す
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED 
GO




技術評論社の書籍ガイドへ
上巻:ISBN4-7741-0965-7

ウィンドウを閉じる


(株)日本技術ソフト開発 責任編集:堀川 明
MSDE FunClubに関するご意見・ご要望等ございましたら、 msdefun@horikawa.ne.jp までご連絡下さい。
HOME: http://www.horikawa.ne.jp/msde/


MSDE FunClubの運営は、マイクロソフト社とは一切の関係はありません