Sign in Join
Wiki copytemporary

Firebird/ja: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11---
22[[Portal:Databases/ja|**データベースのポータル**]]
3-参照:
4-
5- * [[Databases/ja|Databases 概要]]
6- * [[Database libraries/ja|ライブラリ]]
7- * [[Database field type/ja|フィールドの型]]
8- * [[Data Controls tab/ja|コントロール]]
9- * [[Lazarus DB Faq/ja|FAQ]]
10- * [[SqlDBHowto/ja]]
11- * [[Working With TSQLQuery/ja|TSQLQuery の利用]]
12- * [[How to write in-memory database applications in Lazarus/FPC/ja|メモリ上で動作するデータベースの作り方]]
13-
14-チュートリアル/練習となる記事:
15-
16- * [[Lazarus Database Overview/ja|概要]]
17- * [[SQLdb Tutorial0/ja|0 - データベースのセットアップ]]
18- * [[SQLdb Tutorial1/ja|1 - 開始]]
19- * [[SQLdb Tutorial2/ja|2 - 編集]]
20- * [[SQLdb Tutorial3/ja|3 - クエリ]]
21- * [[SQLdb Tutorial4/ja|4 - データモジュール]]
22- * [[SQLdb Programming Reference/ja]]
23-
24-各種データベース
25-
26- [[Advantage Database Server/ja|Advantage]] \- [[MySQLDatabases/ja|MySQL]] \- [MSSQL](</index.php?title=mssqlconn/ja&action=edit&redlink=1> "mssqlconn/ja \(page does not exist\)") \- [[postgres/ja|Postgres]] \- Interbase \- Firebird \- [[Oracle/ja|Oracle]] \- [[ODBCConn/ja|ODBC]] \- [Paradox](</index.php?title=TParadox/ja&action=edit&redlink=1> "TParadox/ja \(page does not exist\)") \- [[SQLite/ja|SQLite]] \- [dBASE](</index.php?title=Lazarus_Tdbf_Tutorial/ja&action=edit&redlink=1> "Lazarus Tdbf Tutorial/ja \(page does not exist\)") \- [[MS Access/ja|MS Access]] \- [Zeos](</index.php?title=Zeos_tutorial/ja&action=edit&redlink=1> "Zeos tutorial/ja \(page does not exist\)")
3+参照: · [[Databases/ja|Databases 概要]] · [[Database libraries/ja|ライブラリ]] · [[Database field type/ja|フィールドの型]] · [[Data Controls tab/ja|コントロール]] · [[Lazarus DB Faq/ja|FAQ]] · [[SqlDBHowto/ja]] · [[Working With TSQLQuery/ja|TSQLQuery の利用]] · [[How to write in-memory database applications in Lazarus/FPC/ja|メモリ上で動作するデータベースの作り方]] · チュートリアル/練習となる記事: · [[Lazarus Database Overview/ja|概要]] · [[SQLdb Tutorial0/ja|0 - データベースのセットアップ]] · [[SQLdb Tutorial1/ja|1 - 開始]] · [[SQLdb Tutorial2/ja|2 - 編集]] · [[SQLdb Tutorial3/ja|3 - クエリ]] · [[SQLdb Tutorial4/ja|4 - データモジュール]] · [[SQLdb Programming Reference/ja]] · 各種データベース · [[Advantage Database Server/ja|Advantage]] \- [[MySQLDatabases/ja|MySQL]] \- [[mssqlconn/ja|MSSQL]] \- [[postgres/ja|Postgres]] \- Interbase \- Firebird \- [[Oracle/ja|Oracle]] \- [[ODBCConn/ja|ODBC]] \- [[TParadox/ja|Paradox]] \- [[SQLite/ja|SQLite]] \- [[Lazarus Tdbf Tutorial/ja|dBASE]] \- [[MS Access/ja|MS Access]] \- [[Zeos tutorial/ja|Zeos]]
274
285これはLazarus/FPCでSQLDB(FPC/Lazarus同梱のライブラリ)SQLDBを用いて**Firebird** データベースを用いるためのガイドである。他のアクセス方法は[[Other Firebird libraries]]に述べられている。
29-
30-## Contents
31-
32- * 1 概要
33- * 2 ドキュメンテーション
34- * 3 クライアント/サーバと組み込みインストール
35- * 3.1 Windows
36- * 3.2 Unix/Linux/macOS
37- * 4 接続例
38- * 5 トラブルシュート クライアント/サーバアクセス問題
39- * 6 イベントのモニタリング
40- * 7 プログラム的にオブジェクトを作る
41- * 8 データベース管理
42- * 9 日常の問題と解決策
43- * 9.1 読み取り専用カラム / COMPUTED BYフィールドへのアップデート
44- * 9.2 大整数: 失われた正確性
45- * 9.3 ブール値データ型
46- * 9.4 INSERT INTO...RETURNING 問題 / Cursorは開いていない =
47- * 9.5 Locateが動いてないようだ
48- * 10 上級トランザクション
49- * 10.1 トランザクション隔離レベル
50- * 10.2 アクセスモード
51- * 10.3 ロック回避
52- * 10.4 テーブル予約
53- * 10.5 レコードバージョン
54- * 10.6 様々なオプション
55- * 10.7 Firebird と ISO トランザクション
56- * 10.8 通常のコンビネーション
57- * 10.8.1 バッチ / バルク INSERT
58- * 10.8.2 読み取り専用トランザクション
59- * 11 リンクとさらなる情報
60- * 11.1 Lazarus Firebird サンプル
61- * 11.2 ツール
62- * 11.3 Firebird
636
647## 概要
658
669Firebirdは長年にわたり使用、開発されてきたオープンソースのフリーデータベースサーバである(BorlandによってオープンソースとなったInterbase 6 より開発されている)。豊富なSQLステートメント(例えば INSERT...RETURNING)、ストアドプロシージャ、トリガ、などをサポートしている。もしすでにあるFirebirdの拡張関数を拡張したければ、Free PascalのコンパイルされたUDF(ユーザー定義関数)を書くこともできる。 本データベースは一度設定してしまえばほとんど手動によるDBA作業を要求せず、小規模ビジネス用途、あるいは組み込み用途に好適に用いられる。PostgreSQLがそのような大規模環境にはより良い選択かもしれないが、適切なチューニングでテラバイトスケールにまで拡張できる。
6710
6811Firebirdは - FPC/Lazarusで1行もコードを変える必要なく、(ファイルベースの)組み込みとクライアント/サーバデータベースを提供する もし組み込みデータベースとして用いられると、[[SQLite]]よりも豊富なSQLサポート同様に、SQLiteが組み込みデータベースとして非常に優秀だといえど、クライアント/サーバデータベースにシームレスに移行できる 最新の安定バージョン、Firebird 2.5、はWindows(32- and 64-bit)、様々なLinuxバージョン (32- and 64-bit)、Solaris (Sparc、Intel)、HP-UX (PA-Risc)、OSXで動作する。
6912
7013現在Androidにポート中で、Windows CEとWindows Mobileでは利用できない。
7114
7215FPCのSQLDBにおけるFirebirdのサポートは非常によく、[[postgres/ja|PostgreSQL]]に匹敵する。
7316
7417## ドキュメンテーション
7518
7619FPC 2.6.2+には公式ドキュメンテーションが含まれている: [SQLDB documentation for IBConnection](<http://www.freepascal.org/docs-html/fcl/ibconnection/index.html>)
7720
7821## クライアント/サーバと組み込みインストール
7922
8023Firebirdはクライアント/サーバと組み込みモードで動作することができる。
8124
8225_Client/Server_ はどこかに物理的なFirebirdサーバ: ローカルマシンあるはネットワークでアクセスできる他のマシン。 サーバに対する接続はTCP/IPを介して、名前、IPアドレスを含む接続をホスト名である。このために必要なFirebird DLLは _fbclient.dll_(_およびそのサポートファイル_) である。
8326
8427_Embedded Firebird_(組み込みFirebird)はローカルマシンのFirebirdデータベースにアクセスするFirebird DLLをロードするアプリケーションを意味する。接続を特定すれば、ホスト名はいつもからである。このために必要なFirebird DLLは _fbembed.dll_(_およびそのサポートファイル_)である。 詳細はここを参照されたい[[Firebird embedded|the wiki page on Firebird embedded]]。
8528
8629_fbembed.dll_ はクライアント/サーバと組み込み用途両方に用いられることに注意。であるので、このdllのみをインストールするのは賢明である。
8730
8831### Windows
8932
9033Win64: 特定のFPC/LazarusではWin64バージョンを用いないことを確かめてほしい [[Windows Programming Tips|here]]
9134
9235Windows: (これはすべてのSQLLBデータベースドライバに当てはまる)、**fbclient.dll** を(もしくは**fbembed.dll**)を持つ必要があり、そのサポートDLLはいかにインストールする:
9336
9437 * プロジェクトディレクトリ **と** 実行ファイルアウトプットディレクトリ/アプリケーションディレクトリ(例えばプロジェクトディレクトリ下のlib/something)
9538 * またはPATHの通ったディレクトリ(システムディレクトリではなく)
9639 * もしシステムディレクトリを用いたいのであれば、公式インストーラーを用いて、"システムディレクトリにコピーする"を選択する
9740
9841全てのデータベースDLLのように、DLLのビット数をアプリケーションに揃えなければならない。32-bitのためにコンパイルしたら、32-bitライブラリを、64-bitならば、64-bitを。
9942
10043### Unix/Linux/macOS
10144
10245FreeBSD/Linux/macOSでは、Firebirdクライアントライブラリをインストールするべきである(例えばパッケージマネージャで通常パッケージと-devパッケージ)、またはそれらはライブラリサーチパスに置かれるべきである。
10346
10447FPCは通常のライブラリ名を探索する(例えばlibfbclient.so.2.5, libgds.so, and libfbembed.so.2.5; もし、バージョンが異なっていたらibase60.incを調べられたい) これには2つの方法がある:
10548
10649 * sqldlibから[[TSQLDBLibraryLoader]] component(FPC 2.7.1). 全てのSQLDBコネクタコンポーネント.
10750 * 正しいライブラリ名で
10851```
10952function InitialiseIBase60(Const LibraryName : AnsiString) : integer;
11053```
11154
11255を呼ぶ(このためにはibase60dynユニットを使う必要があるかもしれない).
11356
11457## 接続例
11558
11659クライアント/サーバの例:
11760```
11861ホスト名: 192.168.1.1
11962 * データベースはIPアドレス 192.168.1.1である。
12063 データベース名: /interdata/example.fdb
12164 * データベースファイル名はサーバの/interdataディレクトリの"example.fdb"(マシンのIP address 192.168.1.1).
12265 ユーザー名: SYSDBA
12366 パスワード: masterkey
12467```
12568
12669もう1つのクライアント/サーバ:
12770```
12871ホスト名: dbhost
12972 * データベースはdbhostのホスト名を持つサーバにある
13073 データベース名: F:\Program Files\firebird\examples\employee.fdb
13174 * dbhostのF:¥ドライブのProgram Files\firebird\examplesディレクトリに"employee.fdb"データベースファイルを持つ
13275 ユーザー名: SYSDBA
13376 パスワード: masterkey
13477```
13578
13679組み込み例:
13780```
13881ホスト名: なし
13982 * ホスト名は空のまま。
14083 データベース名: test.fdb
14184 * データベースファイル名はアプリケーションが実行されるディレクトリの"test.fdb"(fbembed.dllがアプリケーション実行ディレクトリにあることを確認すること)
14285 ユーザー名: SYSDBA
14386 * 組み込みではユーザー名を特定する必要がある...
14487 パスワード: 空文字列
14588 * ... しかしどのパスワードでも構わない
14689```
14790
14891## トラブルシュート クライアント/サーバアクセス問題
14992
15093Interbase/Firebirdサーバが示されたIP/ホスト名で実行されていることを確かめること。マシンにtelnetして接続性を試すことができる。Firebirdは普通ポート3050で待ち受けている:
15194```
15295telnet 192.168.1.1 3050
15396```
15497
15598何か、おそらくブランクスクリーンのようなものを見るはずだ。しかし何かをタイプできる。これはFirebirdデータベースにデータを送ったこととなる。
15699
157100さらなる情報についてはFirebirdドキュメンテーションを参照されたい。
158101
159102## イベントのモニタリング
160103
161104FPC/LazarusにはFirebirdデータベースからくるイベントをモニターするコンポーネントが付属する; [[TFBEventMonitor]]を参照されたい。
162105
163106## プログラム的にオブジェクトを作る
164107
165108例えばツール、Flamerobinといったツールでテーブルを作ることができるが、またプログラム的/動的に行うこともでき、それは現在存在する、データベーススキーマに新しいスキーマでアップデートするときに便利である。
166109
167110このタスクを行うために例えば TSQLQuery.ExecSQL を実行する:
168111```
169112Query.ExecSQL('CREATE TABLE TEST(ID INTEGER NOT NULL, TESTNAME VARCHAR(800))');
170113 // どのDMLの前 - SELECT、INSERTなどのステートメント、DDLの後にトランザクションをコミットする必要がある。
171114 // さもないとSQLはオブジェクトを見ないだろう。
172115```
173116
174117これを行うためにTSQLScriptオブジェクトを用いる - [[TSQLScript]]を参照されたい。
175118
176119## データベース管理
177120
178121FPC/Lazarusはデータベース管理のためのコンポーネントを有している; [[TFBAdmin]]を参照されたい。
179122
180123## 日常の問題と解決策
181124
182125ときに、LazarusのFirebirdは扱いに注意が必要となる。以下の解決策をご覧いただきたい。
183126
184127### 読み取り専用カラム / COMPUTED BYフィールドへのアップデート
185128
186129もし、FirebirdテーブルにCOMPUTED BYフィールド(サーバ側で計算されるフィールド)を持つ場合、SQLDBはそれらは読み取り専用で(性能上の理由で)ピックアップしない。
187130
188131このような場合、自動生成されたINSERTSQL、UPDATESQLが"attempted update of read-only column"のようなメッセージをだす。解決策はTSQLQueryのSQLプロパティを設定した後に、当該フィールドをがアップデートされないかもしれないと手動で特定することである。それはこのように:
189132```
190133// ユーザーが変更できないようにこのフィールドを変更した値でアップデートまたは検索しないようにことである。
191134 sqlquery1.fieldbyname('full_name').ProviderFlags:=[];
192135```
193136
194137### 大整数: 失われた正確性
195138
196139もし大整数データタイプ(64 bit でサインされた整数signed integer)をFirebirdで用いるときはパラメータとして.AsIntegerの代わりに.AsLargeIntを用いること:
197140```
198141// 大整数のIDをここで割りてる
199142 sqlquery1.sql.text := 'insert into ADDRESS (ID) values (:ID)';
200143 // これを使うこと:
201144 sqlquery1.params.parambyname('ID').aslargeint := <some qword or 64 bit integer variable>;
202145 // これは用いないこと:
203146 //sqlquery1.params.parambyname('ID').asinteger := <some qword or 64 bit integer variable>;
204147 ...
205148```
206149
207150... さもないと重複したプライマリキー - もし大整数をプライマリキーに用いている場合、があるとエラーが出るかもしれない。
208151
209152### ブール値データ型
210153
211154Firebirdのバージョン3.0に満たないものはブール値データ型を持たない。
212155
213156少なくともFPCトランク(2.7.1)はこの型をエミュレートできる:
214157
215158SMALLINTを用いるDOMAINを用いること(他の整数型も動作するだろう - 適宜テストして読み替えられたい):
216159```
217160CREATE DOMAIN "BOOLEAN" AS SMALLINT
218161 CHECK (VALUE IS NULL OR VALUE IN (-1,0,1))
219162 /* -1 はFPC SQLDBとの互換性のために用いられている; 1は他の多くのデータアクセスレイヤで用いられている*/
220163 ;
221164```
222165
223166
224167フィールド/カラムにこのドメイン型を使わせること、例えば
225168```
226169CREATE TABLE MYTABLE
227170 (
228171 ...
229172 MYBOOLEANCOLUMN "BOOLEAN",
230173 );
231174```
232175
233176 * これでフィールド値等に .AsBooleanを用いることができる。
234177
235178**To do: これがLazarusのグリッド等で動くことの確認。**
236179
237180### INSERT INTO...RETURNING 問題 / Cursorは開いていない =
238181
239182もし、このようなSQLでselect SQL(例えば Query Open)をしようとすると:
240183```
241184INSERT INTO PEOPLE (NICKNAME) VALUES ('Superman') RETURNING ID
242185```
243186
244187このようなエラーを見ることになる:
245188```
246189Database error:  : Fetch :
247190 -Dynamic SQL Error
248191 -SQL error code = -504
249192 -Invalid cursor reference
250193 -Cursor is not open(error code: 335544569)
251194```
252195
253196FPC 2.6.0 (Lazarus 1.0で供給される)もしくはそれ未満では, おそらくFPC SQLDBパーサバグに遭遇しただろう。
254197
255198SQLDBは今行われているステートメントは通常の値を返さない、INSERTステートメントと考える。実際はそれはデータを返す。 より新しいFPCコードではこれは修正してある。
256199
257200もし、多くの人間がするように、プライマリキーにジェネレータ/連続数を用いているのならば、これの回避の仕方は次の連続番号を最初に得ることである:
258201```
259202SELECT NEXT VALUE FOR GEN_PEOPLEID FROM RDB$DATABASE /* もしジェネレータの名前がGEN_PEOPLEIDとして */
260203```
261204
262205そして、それを一般的なINSERTをすることに用いる。 [FAQ entry](<http://www.firebirdfaq.org/faq111/%7CFirebird>)を参照されたい。
263206
264207### Locateが動いてないようだ
265208
266209Source: [Issue ##21988](<https://bugs.freepascal.org/view.php?id=#21988>)
267210
268211UTF8(もしくは他のマルチバイトキャラクタセット)CHARフィールドを動作させると、locateはレコードを見失うようだ。 問題はUTF8キャラクタセットが用いられ、どのようにFirebirdがカラムの長さを返すかにほとんど関連している。UTF8の場合、Firebirdは4倍の"キャラクタ長"として最大カラム長(バイトで)を返す。そのため、char(8)で定義されたカラムを持つと、Firebirdは4*8=32を返す。 値はこの32の長さに対して右揃えされる。例えば'57200001'をロケートするとフィールドは実際には'57200001 ........................'(ここでは続くスペースをドットで表している)を格納するのでマッチしない。
269212
270213回避策: selectクエリを書き直す:
271214```
272215SELECT substring(THEFIELD from 1 for 8) AS THEFIELD ...
273216```
274217```
275218または
276219```
277220```
278221SELECT cast(THEFIELD as varchar(8)) as THEFIELD ...
279222```
280223
281224または VARCHAR フィールドを用いる。
282225
283226注意: この問題はフィールド長を返すことに依存する他のデータベースでも起こるかもしれない。
284227
285228## 上級トランザクション
286229
287230この情報/より高度なものとして以下がある:
288231
289232 * [Understanding Firebird Transactions](<http://www.ibphoenix.com/resources/documents/how_to/doc_400>) 非常に詳細な記事
290233 * [Transactions in Firebird](<https://ib-aid.com/en/transactions-in-firebird-acid-isolation-levels-deadlocks-and-update-conflicts-resolution/>) もう1つの非常に詳細な記事
291234 * Interbase 6 API Guide (FirebirdとInterbaseで共通) 63ページ以降
292235 * [Overview of transaction settings in Interbase](<http://conferences.embarcadero.com/article/32280>)
293236 * [Detailed explanation of parameters in Firebird](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)
294237 * [Overview of settings in Firebird](<http://fhasovic.blogspot.com/2005/02/transaction-isolation-levels-in.html>)
295238 * [Transaction isolation levels in FIBPlus](<http://www.devrace.com/en/fibplus/articles/3292.php>)
296239 * README.set_transaction.txt Firebird 2.5 ドキュメンテーションフォルダ。
297240
298241### トランザクション隔離レベル
299242
300243もし望むなら、トランザクションのパラメータプロパティに1行加えることで、トランザクション隔離レベルを変えることができる:
301244
302245 * `isc_tpb_read_committed`: 他のトランザクションによりコミットされたすべての変化をすべて見ることができる
303246 * `isc_tpb_concurrency`: スナップショットとも呼ばれる: データベースがトランザクションを始めた時を見ることができる。より大きなオーバーヘッドがある isc_tpb_read_committed。幽霊読み出しがないのでANSI直列化可能より優れている
304247 * `isc_tpb_consistency`: 安定性とも呼ばれる: データの安定した、直列化可能なビュー、しかしテーブルをロックしてしまう。これが必要なことはないだろう
305248
306249例:
307250```
308251SQLTransaction1.Params.text:='isc_tpb_read_committed';
309252```
310253
311254トランザクションに効果のあるパラメータを追加できる(ibconnection.ppソースファイルから引用および[[1]](<http://conferences.embarcadero.com/article/32280>))
312255
313256### アクセスモード
314257
315258読み取り専用または読み書き可能を許す
316259
317260 * `isc_tpb_read`: 読み取り許可read permission
318261 * `isc_tpb_write`: 読み取り+書き込み許可
319262
320263### ロック回避
321264
322265 * `isc_tpb_nowait`: もし他のトランザクションがレコードを編集しており、そして待たない
323266 * `isc_tpb_wait`: もし他のトランザクションがレコードを編集しており、その終了を待つ。重い競合で "live locks" を最小限にする([[2]](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)). タイムアウトバリュー以下を参照されたい
324267
325268### テーブル予約
326269
327270テーブル全体をロックする。
328271
329272 * `isc_tpb_shared`: 始めてこれを設定すると、1つ、あるいは複数のテーブルにlock_read または lock_write がかかる。テーブルに対するシェアされた読み取りまたは書き込みモード。
330273 * `isc_tpb_protected`: 始めてこれを設定すると、1つ、あるいは複数のテーブルにlock_read または lock_writeの両方がかかる。テーブルのロックオンは遅延したトランザクションのコストの代わりにデッドロックのない操作を可能にする。
331274 * `isc_tpb_lock_read`: 読み取りロックを設定する。テーブルをロックするときに設定。例えばisc_tpb_lock_read=CUSTOMERS
332275 * `isc_tpb_lock_write`: 読み取り/書き込みロック。どのテーブルをロックするか特定する。例えばe.g. isc_tpb_lock_read=CUSTOMERS
333276
334277組み合わせ:
335278
336279 * シェアされて、書き込みロック: 同時実行性もしくはコミットされた隔離を伴う書き込みトランザクションはテーブルをアップデートする。すべてのトランザクションがテーブルを読み取ることができる。
337280 * シェアされて、読み取りロック: どのトランザクションも読み取りまたはアップデートできる。
338281 * 保護されて、書き込みロック、読み取りロック: 他のトランザクションはテーブルをアップデートできない。同時実行性と読み取りトランザクションがテーブルを読むことができる。
339282 * 保護されて、読み取りロック: 他のトランザクションはテーブルをアップデートできない。どのトランザクションもテーブルを読み取ることができる。
340283
341284### レコードバージョン
342285
343286この設定は明らかに他のトランザクションによって変更されたレコードに対するisc_tpb_read_committedアイソレーションモードに対してのみ関連する:
344287
345288 * `isc_tpb_no_rec_version`: もっとも新しいレコードバージョンのみ読み取られる。isc_tpb_read_committedとともにバッチ/バルクinsertに有用である
346289 * `isc_tpb_rec_version`: 最も最近コミットされたバージョンが読み取られる、他のトランザクションがコミットされてない変更を持っているときでさえ。**注意: 確認すること** 。isc_tpb_no_rec_versionよりもオーバーヘッドがある
347290
348291### 様々なオプション
349292
350293完全性のためにFirebird/Interbase FPCコードの中にはいくつかのオプションがある。 おそらくバッチinsert/editの速度を上げるためにisc_tpb_no_auto_undoを用いるであろう。
351294
352295 * isc_tpb_exclusive (明らかにFirebirdで保護されている変換をする。[[3]](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)を参照されたい)
353296 * isc_tpb_verb_time (動詞時またはコミット時異なった制約に関連している。Firebird: 実装されていない、いつも動詞時を使う)
354297 * isc_tpb_commit_time (動詞時またはコミット時異なった制約に関連している。Firebird: 実装されていない、いつも動詞時を使う)
355298 * isc_tpb_ignore_limbo (無視されたトランザクションにより生成されたレコードを無視する。無視されたトランザクションはマルチデータベーストランアクションで2フェーズコミットを失敗する。将来これが必要となることはなさそうである)
356299 * isc_tpb_autocommit (このトランザクションを自動コミットする: 全てのステートメントは分離される。おそらく、特にJayBird JDBCドライバのためである。)
357300 * isc_tpb_restart_requests (明らかに他のトランザクションでアクティブであったコネクションのリクエストを探す、それを元に戻し、新しいトランザクションを再開する。)
358301 * isc_tpb_no_auto_undo (トランザクションレベルアンドゥログを無効にする、バッチアップデートで最大のスループットを出すために便利である。データを呼んでいるだけの時には効果がない。)
359302 * isc_tpb_lock_timeout (もし、isc_tpb_waitを用いているならロック解除のために待つ秒数を設定する。もしこの値がロック解除なしに到達すると、エラーが出される。)
360303
361304### Firebird と ISO トランザクション
362305
363306FirebirdトランザクションはISO/ANSIトランザクションレベルに1対1で当てはまっていない。要約は:
364307
365308 * ISO Read Committed=READ COMMITTED+RECORD_VERSION
366309 * ISO Read Committed=READ COMMITTED+NO RECORD_VERSION
367310 * ISO Repeatable Read=SNAPSHOT (CONCURRENCYとしても知られる)
368311 * ISO Serializable=SNAPSHOT TABLE STABILITY (CONSISTENCYとしても知られる)
369312
370313### 通常のコンビネーション
371314
372315デフォルトは読み取りコミットである(おそらく確認の必要がある)。
373316
374317#### バッチ / バルク INSERT
375318
376319isc_tpb_read_committed と isc_tpb_no_rec_version は良い組み合わせであろう: バッチが進行しているときに他のトランザクションが可能である。
377320
378321#### 読み取り専用トランザクション
379322
380323もし、データベースアクセスが読み取り専用であることを望むなら、このトランザクションパラメータを設定することでそのようにできる:
381324
382325 * `isc_tpb_read`
383326 * `isc_tpb_read_committed`
384327 * `isc_tpb_rec_version`
385328 * `nowait`
386329
387330この組み合わせはガーベージコレクションをブロックしないだろう、それは良いことである。 出典: [[4]](<http://tech.groups.yahoo.com/group/firebird-support/message/118748>)
388331
389332注意: [Firebird FAQ](<http://www.firebirdfaq.org/faq164/>) はもしデータベースを読み取り専用に設定しないならば、もし、読み取りだけでもデータベースファイルに書き込みアクセスが必要であることを示している(例えば gfixを用いて)。
390333
391334## リンクとさらなる情報
392335
393336以下のリストはFirebirdと関連するツールのさらなる情報に対するリンクである。
394337
395338 * [[Firebird embedded|Using Firebird embedded with FPC/Lazarus]]
396339
397340### Lazarus Firebird サンプル
398341
399342 * Sample Lazarus/Firebird application source code [[5]](<http://lazarus.freepascal.org/index.php/topic,13940.msg73617.html#msg73617>)
400343 * Firebird/SQLDB tutorials:
401344 * [[SQLdb Tutorial0/ja]]
402345 * [[SQLdb Tutorial1/ja]]
403346 * [[SQLdb Tutorial2/ja]]
404347 * [[SQLdb Tutorial3/ja]]
405348 * [[SQLdb Tutorial4/ja]]
406349
407350 * PP4S tutorials; cover Firebird installation on Windows as well:(訳注いずれのリンクもおかしい)
408351 * [Planning a Database](<http://www.pp4s.co.uk/main/tu-db-plan.html>)
409352 * [Installing Firebird](<http://www.pp4s.co.uk/main/tu-db-installingfirebird01.html>)
410353 * [Creating a Firebird database](<http://www.pp4s.co.uk/main/tu-db-firebird-create.html>)
411354 * [Editing a Firebird database](<http://www.pp4s.co.uk/main/tu-db-firebird-demo1.html>)
412355 * [Searching a Firebird database](<http://www.pp4s.co.uk/main/tu-db-firebird-demo2.html>)
413356 * [Creating and printing a report](<http://www.pp4s.co.uk/main/tu-db-firebird-demo3.html>)
414357 * [Creating and using stored procedures](<http://www.pp4s.co.uk/main/tu-db-firebird-demo4.html>)
415358
416359### ツール
417360
418361 * FlameRobin [Flamerobin site](<http://www.flamerobin.org/>) オープンソースのFirebird管理ツールである。Windows、Linux、Mac OSXで使える。特に推奨される。
419362 * Turbobird [Turbobird site](<https://github.com/motaz/turbobird>) オープンソースのFirebird管理ツール。TIBCOnnectionを用いてLazarusで書かれてある。
420363 * ibconsole : GUIでFirebird、Interbaseを管理するツール、Windows、Linuxで利用できる。
421364 * Lazarus Data Desktop - Lazarusレポジトリに含まれる。('tools/lazdatadesktop/'ディレクトリにある)
422365 * [LazSQLX](<http://lazsqlx.wordpress.com/>) マルチデータベースオープンソースデータベースマネジメントツール。LazarusでSQLDBとZeosの両方を用いて書かれている。Firebirdに対するサポートがある。
423366 * tiSQLEditor - [[tiOPF]]レポジトリの"Support Apps"ディレクトリに含まれる。コード補完サポートでSQLを書くために使われるツールである。スクリプトを実行、のちに組み立てるために、ある構築からスクリプトをアップグレードできる。Object Pascalアプリケーションのために様々な便利なコピー&ペースト機能を持つ。tiOPFにとって便利な(tiOPFのビジタークラスでクエリの結果からObject Pascalのコードテンプレートを生成する)多くの機能がある
424367
425368### Firebird
426369
427370 * The Firebird RDBMS [Firebird site](<http://firebirdsql.org/>). このサイトはFirebirdについて多くのドキュメンテーションを含む。
428371 * Firebird FAQ [[6]](<http://firebirdfaq.org/>). 例えば、たのRDBMSとの差異を示す便利なサイト。
429372 * 最近のツールとLibreOfficeの用い方を示す新しいサイト、FPCが間もなく加えられる。[Firebird](<http://www.controlpascal.com/firebird.htm>)
430373
431374---
432375*From the Free Pascal wiki, page "Firebird/ja", as the Internet Archive kept it on 2025-01-17, last changed on 2024-09-27. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history