プロが教えるわが家の防犯対策術!

SQLServerをはじめて使っています。
トランザクションを開始すればそれに合せてロックがかかるのでしょうか?
作成者の意図で明示的にロックはかけられるのでしょうか?
できるだけ、詳細に教えていただけると助かります。
もしくは、詳細な説明がのっているサイトを教えてください。
初心者なのでさっぱりわかりません。
よろしくお願いいたします。

A 回答 (2件)

beginをした時点では単純にトランザクションのスタートを


宣言しただけで、その後の更新系のSQLで更新されたレコードが
トランザクションの対象になります(end or rollbackまで)。
また、全ての人に対して排他がかかる(テーブルロック)と
いうわけではなく、更新対象のレコードのみ排他がかかる
(行ロック)と思います。
(SQLServer2000の場合。以前のバージョンではページロック
しかかけられなかったと記憶しています)

私はjavaでSQLServerを使っていますが、javaの場合は、
明示的にbeginせずにコネクションにsetAutoCommit(false)
にして、トランザクションの終わりにcommit() or rollback()
をしてトランザクション終了、という感じです。
    • good
    • 0
この回答へのお礼

親切に答えて頂きありがとうございました。
今は調査段階のため、どこまで調べたらいいのかも分からず、わかりにくい質問になってしまい申しわけありませんでした。
どういう状況でのロックを上が想定しているかわからないので調査も一苦労です。
使う状況などが見えてきたらまた質問させていただくかもしればせんがよろしくお願い致します。

お礼日時:2004/06/24 09:12

基本的に更新系のSQLを実行すれば対象レコードは排他がかかると


思いますが、Select文ではfor updateつければよかったような。
これはOracleだけかな?

この回答への補足

トランザクションというのは、どこで排他をかけているのでしょうか?
行のロックとかとは違いがあるのでしょうか?
BEGINをしていたら他の人が入ってこれないって感じでいいのでしょうか?
追加質問で申し訳ありません。
よろしくお願い致します。

補足日時:2004/06/23 09:12
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考にさせて頂きます。

お礼日時:2004/06/23 09:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す