$ sqlplus $ sqlplus myuser@myhost $ sqlplus myuser/xxxxx@myhost $ sqlplus myuser/xxxxx@myhost/xe
トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス
JPOUG Advent Calendar 2013の23日目です。比較的簡単なDMLでもRDBMS間の非互換性が出てしまうという怖い話をします。 +----+------+ | id | data | +----+------+ | 1 | a | | 2 | b | | 3 | c | +----+------+BEGIN; -- IDが最も小さいレコードをロックする SELECT id, data FROM q WHERE id = (SELECT MIN(id) FROM q) FOR UPDATE; (何らかの処理) -- 処理が終わったので削除する DELETE FROM q WHERE id = (1つ目のSQLで取得したID); COMMIT;IDが最も小さいレコードをロックし、何らかの処理を行って、最後にそのレコードを削除します。IDが最も小さいレコードを取得するというの
ApacheのCommons DBCPに含まれるorg.apache.commons.dbcp.BasicDataSourceFactoryでは、validationQueryというのを指定できるが、ここで指定するクエリにはいくつかの条件がある。 SELECTクエリであること 1つ以上の行を返すこと 1つ以上の列を返すこと したがって、例えば、"SELECT COUNT(*) FROM xxx"みたいなクエリは条件を満たすが、コネクションの検証のためだけに重たくなるかもしれないクエリは投げたくない。 そこで、DB2、Oracle、PostgreSQL、MySQLについて、validationQueryに適していそうなクエリを作ってみた。 なお、括弧内は動作確認に使用したDBMSのバージョン。 DB2 (v9.1, v9.5)*1 SELECT * FROM TABLE(VALUES(1))
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く