Sign in Join
Wiki copytemporary

Firebird/ja: what changed

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

OldNewLine
11---
22[[Portal:Databases/ja|**データベースのポータル**]]
33参照:
44
55 * [[Databases/ja|Databases 概要]]
66 * [[Database libraries/ja|ライブラリ]]
77 * [[Database field type/ja|フィールドの型]]
88 * [[Data Controls tab/ja|コントロール]]
99 * [[Lazarus DB Faq/ja|FAQ]]
1010 * [[SqlDBHowto/ja]]
1111 * [[Working With TSQLQuery/ja|TSQLQuery の利用]]
1212 * [[How to write in-memory database applications in Lazarus/FPC/ja|メモリ上で動作するデータベースの作り方]]
1313
1414チュートリアル/練習となる記事:
1515
1616 * [[Lazarus Database Overview/ja|概要]]
1717 * [[SQLdb Tutorial0/ja|0 - データベースのセットアップ]]
1818 * [[SQLdb Tutorial1/ja|1 - 開始]]
1919 * [[SQLdb Tutorial2/ja|2 - 編集]]
2020 * [[SQLdb Tutorial3/ja|3 - クエリ]]
2121 * [[SQLdb Tutorial4/ja|4 - データモジュール]]
2222 * [[SQLdb Programming Reference/ja]]
2323
2424各種データベース
2525
2626 [[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\)")
2727
2828これはLazarus/FPCでSQLDB(FPC/Lazarus同梱のライブラリ)SQLDBを用いて**Firebird** データベースを用いるためのガイドである。他のアクセス方法は[[Other Firebird libraries]]に述べられている。
2929
3030## Contents
3131
3232 * 1 概要
3333 * 2 ドキュメンテーション
3434 * 3 クライアント/サーバと組み込みインストール
3535 * 3.1 Windows
3636 * 3.2 Unix/Linux/macOS
3737 * 4 接続例
3838 * 5 トラブルシュート クライアント/サーバアクセス問題
3939 * 6 イベントのモニタリング
4040 * 7 プログラム的にオブジェクトを作る
4141 * 8 データベース管理
4242 * 9 日常の問題と解決策
4343 * 9.1 読み取り専用カラム / COMPUTED BYフィールドへのアップデート
4444 * 9.2 大整数: 失われた正確性
4545 * 9.3 ブール値データ型
4646 * 9.4 INSERT INTO...RETURNING 問題 / Cursorは開いていない =
4747 * 9.5 Locateが動いてないようだ
4848 * 10 上級トランザクション
4949 * 10.1 トランザクション隔離レベル
5050 * 10.2 アクセスモード
5151 * 10.3 ロック回避
5252 * 10.4 テーブル予約
5353 * 10.5 レコードバージョン
5454 * 10.6 様々なオプション
5555 * 10.7 Firebird と ISO トランザクション
5656 * 10.8 通常のコンビネーション
5757 * 10.8.1 バッチ / バルク INSERT
5858 * 10.8.2 読み取り専用トランザクション
5959 * 11 リンクとさらなる情報
6060 * 11.1 Lazarus Firebird サンプル
6161 * 11.2 ツール
6262 * 11.3 Firebird
6363
6464## 概要
6565
6666Firebirdは長年にわたり使用、開発されてきたオープンソースのフリーデータベースサーバである(BorlandによってオープンソースとなったInterbase 6 より開発されている)。豊富なSQLステートメント(例えば INSERT...RETURNING)、ストアドプロシージャ、トリガ、などをサポートしている。もしすでにあるFirebirdの拡張関数を拡張したければ、Free PascalのコンパイルされたUDF(ユーザー定義関数)を書くこともできる。 本データベースは一度設定してしまえばほとんど手動によるDBA作業を要求せず、小規模ビジネス用途、あるいは組み込み用途に好適に用いられる。PostgreSQLがそのような大規模環境にはより良い選択かもしれないが、適切なチューニングでテラバイトスケールにまで拡張できる。
6767
6868Firebirdは - 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で動作する。
6969
7070現在Androidにポート中で、Windows CEとWindows Mobileでは利用できない。
7171
7272FPCのSQLDBにおけるFirebirdのサポートは非常によく、[[postgres/ja|PostgreSQL]]に匹敵する。
7373
7474## ドキュメンテーション
7575
7676FPC 2.6.2+には公式ドキュメンテーションが含まれている: [SQLDB documentation for IBConnection](<http://www.freepascal.org/docs-html/fcl/ibconnection/index.html>)
7777
7878## クライアント/サーバと組み込みインストール
7979
8080Firebirdはクライアント/サーバと組み込みモードで動作することができる。
8181
8282_Client/Server_ はどこかに物理的なFirebirdサーバ: ローカルマシンあるはネットワークでアクセスできる他のマシン。 サーバに対する接続はTCP/IPを介して、名前、IPアドレスを含む接続をホスト名である。このために必要なFirebird DLLは _fbclient.dll_(_およびそのサポートファイル_) である。
8383
8484_Embedded Firebird_(組み込みFirebird)はローカルマシンのFirebirdデータベースにアクセスするFirebird DLLをロードするアプリケーションを意味する。接続を特定すれば、ホスト名はいつもからである。このために必要なFirebird DLLは _fbembed.dll_(_およびそのサポートファイル_)である。 詳細はここを参照されたい[[Firebird embedded|the wiki page on Firebird embedded]]。
8585
8686_fbembed.dll_ はクライアント/サーバと組み込み用途両方に用いられることに注意。であるので、このdllのみをインストールするのは賢明である。
8787
8888### Windows
8989
9090Win64: 特定のFPC/LazarusではWin64バージョンを用いないことを確かめてほしい [[Windows Programming Tips|here]]
9191
9292Windows: (これはすべてのSQLLBデータベースドライバに当てはまる)、**fbclient.dll** を(もしくは**fbembed.dll**)を持つ必要があり、そのサポートDLLはいかにインストールする:
9393
9494 * プロジェクトディレクトリ **と** 実行ファイルアウトプットディレクトリ/アプリケーションディレクトリ(例えばプロジェクトディレクトリ下のlib/something)
9595 * またはPATHの通ったディレクトリ(システムディレクトリではなく)
9696 * もしシステムディレクトリを用いたいのであれば、公式インストーラーを用いて、"システムディレクトリにコピーする"を選択する
9797
9898全てのデータベースDLLのように、DLLのビット数をアプリケーションに揃えなければならない。32-bitのためにコンパイルしたら、32-bitライブラリを、64-bitならば、64-bitを。
9999
100100### Unix/Linux/macOS
101101
102102FreeBSD/Linux/macOSでは、Firebirdクライアントライブラリをインストールするべきである(例えばパッケージマネージャで通常パッケージと-devパッケージ)、またはそれらはライブラリサーチパスに置かれるべきである。
103103
104104FPCは通常のライブラリ名を探索する(例えばlibfbclient.so.2.5, libgds.so, and libfbembed.so.2.5; もし、バージョンが異なっていたらibase60.incを調べられたい) これには2つの方法がある:
105105
106106 * sqldlibから[[TSQLDBLibraryLoader]] component(FPC 2.7.1). 全てのSQLDBコネクタコンポーネント.
107107 * 正しいライブラリ名で
108108```
109109function InitialiseIBase60(Const LibraryName : AnsiString) : integer;
110110```
111111
112112を呼ぶ(このためにはibase60dynユニットを使う必要があるかもしれない).
113113
114114## 接続例
115115
116116クライアント/サーバの例:
117117```
118118ホスト名: 192.168.1.1
119119 * データベースはIPアドレス 192.168.1.1である。
120120 データベース名: /interdata/example.fdb
121121 * データベースファイル名はサーバの/interdataディレクトリの"example.fdb"(マシンのIP address 192.168.1.1).
122122 ユーザー名: SYSDBA
123123 パスワード: masterkey
124124```
125125
126126もう1つのクライアント/サーバ:
127127```
128128ホスト名: dbhost
129129 * データベースはdbhostのホスト名を持つサーバにある
130130 データベース名: F:\Program Files\firebird\examples\employee.fdb
131131 * dbhostのF:¥ドライブのProgram Files\firebird\examplesディレクトリに"employee.fdb"データベースファイルを持つ
132132 ユーザー名: SYSDBA
133133 パスワード: masterkey
134134```
135135
136136組み込み例:
137137```
138138ホスト名: なし
139139 * ホスト名は空のまま。
140140 データベース名: test.fdb
141141 * データベースファイル名はアプリケーションが実行されるディレクトリの"test.fdb"(fbembed.dllがアプリケーション実行ディレクトリにあることを確認すること)
142142 ユーザー名: SYSDBA
143143 * 組み込みではユーザー名を特定する必要がある...
144144 パスワード: 空文字列
145145 * ... しかしどのパスワードでも構わない
146146```
147147
148148## トラブルシュート クライアント/サーバアクセス問題
149149
150150Interbase/Firebirdサーバが示されたIP/ホスト名で実行されていることを確かめること。マシンにtelnetして接続性を試すことができる。Firebirdは普通ポート3050で待ち受けている:
151151```
152152telnet 192.168.1.1 3050
153153```
154154
155155何か、おそらくブランクスクリーンのようなものを見るはずだ。しかし何かをタイプできる。これはFirebirdデータベースにデータを送ったこととなる。
156156
157157さらなる情報についてはFirebirdドキュメンテーションを参照されたい。
158158
159159## イベントのモニタリング
160160
161161FPC/LazarusにはFirebirdデータベースからくるイベントをモニターするコンポーネントが付属する; [[TFBEventMonitor]]を参照されたい。
162162
163163## プログラム的にオブジェクトを作る
164164
165165例えばツール、Flamerobinといったツールでテーブルを作ることができるが、またプログラム的/動的に行うこともでき、それは現在存在する、データベーススキーマに新しいスキーマでアップデートするときに便利である。
166166
167167このタスクを行うために例えば TSQLQuery.ExecSQL を実行する:
168168```
169169Query.ExecSQL('CREATE TABLE TEST(ID INTEGER NOT NULL, TESTNAME VARCHAR(800))');
170170 // どのDMLの前 - SELECT、INSERTなどのステートメント、DDLの後にトランザクションをコミットする必要がある。
171171 // さもないとSQLはオブジェクトを見ないだろう。
172172```
173173
174174これを行うためにTSQLScriptオブジェクトを用いる - [[TSQLScript]]を参照されたい。
175175
176176## データベース管理
177177
178178FPC/Lazarusはデータベース管理のためのコンポーネントを有している; [[TFBAdmin]]を参照されたい。
179179
180180## 日常の問題と解決策
181181
182182ときに、LazarusのFirebirdは扱いに注意が必要となる。以下の解決策をご覧いただきたい。
183183
184184### 読み取り専用カラム / COMPUTED BYフィールドへのアップデート
185185
186186もし、FirebirdテーブルにCOMPUTED BYフィールド(サーバ側で計算されるフィールド)を持つ場合、SQLDBはそれらは読み取り専用で(性能上の理由で)ピックアップしない。
187187
188188このような場合、自動生成されたINSERTSQL、UPDATESQLが"attempted update of read-only column"のようなメッセージをだす。解決策はTSQLQueryのSQLプロパティを設定した後に、当該フィールドをがアップデートされないかもしれないと手動で特定することである。それはこのように:
189189```
190190// ユーザーが変更できないようにこのフィールドを変更した値でアップデートまたは検索しないようにことである。
191191 sqlquery1.fieldbyname('full_name').ProviderFlags:=[];
192192```
193193
194194### 大整数: 失われた正確性
195195
196196もし大整数データタイプ(64 bit でサインされた整数signed integer)をFirebirdで用いるときはパラメータとして.AsIntegerの代わりに.AsLargeIntを用いること:
197197```
198198// 大整数のIDをここで割りてる
199199 sqlquery1.sql.text := 'insert into ADDRESS (ID) values (:ID)';
200200 // これを使うこと:
201201 sqlquery1.params.parambyname('ID').aslargeint := <some qword or 64 bit integer variable>;
202202 // これは用いないこと:
203203 //sqlquery1.params.parambyname('ID').asinteger := <some qword or 64 bit integer variable>;
204204 ...
205205```
206206
207207... さもないと重複したプライマリキー - もし大整数をプライマリキーに用いている場合、があるとエラーが出るかもしれない。
208208
209209### ブール値データ型
210210
211211Firebirdのバージョン3.0に満たないものはブール値データ型を持たない。
212212
213213少なくともFPCトランク(2.7.1)はこの型をエミュレートできる:
214214
215215SMALLINTを用いるDOMAINを用いること(他の整数型も動作するだろう - 適宜テストして読み替えられたい):
216216```
217217CREATE DOMAIN "BOOLEAN" AS SMALLINT
218218 CHECK (VALUE IS NULL OR VALUE IN (-1,0,1))
219219 /* -1 はFPC SQLDBとの互換性のために用いられている; 1は他の多くのデータアクセスレイヤで用いられている*/
220220 ;
221221```
222222
223223
224224フィールド/カラムにこのドメイン型を使わせること、例えば
225225```
226226CREATE TABLE MYTABLE
227227 (
228228 ...
229229 MYBOOLEANCOLUMN "BOOLEAN",
230230 );
231231```
232232
233233 * これでフィールド値等に .AsBooleanを用いることができる。
234234
235235**To do: これがLazarusのグリッド等で動くことの確認。**
236236
237237### INSERT INTO...RETURNING 問題 / Cursorは開いていない =
238238
239239もし、このようなSQLでselect SQL(例えば Query Open)をしようとすると:
240240```
241241INSERT INTO PEOPLE (NICKNAME) VALUES ('Superman') RETURNING ID
242242```
243243
244244このようなエラーを見ることになる:
245245```
246246Database error:  : Fetch :
247247 -Dynamic SQL Error
248248 -SQL error code = -504
249249 -Invalid cursor reference
250250 -Cursor is not open(error code: 335544569)
251251```
252252
253253FPC 2.6.0 (Lazarus 1.0で供給される)もしくはそれ未満では, おそらくFPC SQLDBパーサバグに遭遇しただろう。
254254
255255SQLDBは今行われているステートメントは通常の値を返さない、INSERTステートメントと考える。実際はそれはデータを返す。 より新しいFPCコードではこれは修正してある。
256256
257257もし、多くの人間がするように、プライマリキーにジェネレータ/連続数を用いているのならば、これの回避の仕方は次の連続番号を最初に得ることである:
258258```
259259SELECT NEXT VALUE FOR GEN_PEOPLEID FROM RDB$DATABASE /* もしジェネレータの名前がGEN_PEOPLEIDとして */
260260```
261261
262262そして、それを一般的なINSERTをすることに用いる。 [FAQ entry](<http://www.firebirdfaq.org/faq111/%7CFirebird>)を参照されたい。
263263
264264### Locateが動いてないようだ
265265
266266Source: [Issue ##21988](<https://bugs.freepascal.org/view.php?id=#21988>)
267267
268268UTF8(もしくは他のマルチバイトキャラクタセット)CHARフィールドを動作させると、locateはレコードを見失うようだ。 問題はUTF8キャラクタセットが用いられ、どのようにFirebirdがカラムの長さを返すかにほとんど関連している。UTF8の場合、Firebirdは4倍の"キャラクタ長"として最大カラム長(バイトで)を返す。そのため、char(8)で定義されたカラムを持つと、Firebirdは4*8=32を返す。 値はこの32の長さに対して右揃えされる。例えば'57200001'をロケートするとフィールドは実際には'57200001 ........................'(ここでは続くスペースをドットで表している)を格納するのでマッチしない。
269269
270270回避策: selectクエリを書き直す:
271271```
272272SELECT substring(THEFIELD from 1 for 8) AS THEFIELD ...
273273```
274274```
275275または
276276```
277277```
278278SELECT cast(THEFIELD as varchar(8)) as THEFIELD ...
279279```
280280
281281または VARCHAR フィールドを用いる。
282282
283283注意: この問題はフィールド長を返すことに依存する他のデータベースでも起こるかもしれない。
284284
285285## 上級トランザクション
286286
287287この情報/より高度なものとして以下がある:
288288
289289 * [Understanding Firebird Transactions](<http://www.ibphoenix.com/resources/documents/how_to/doc_400>) 非常に詳細な記事
290290 * [Transactions in Firebird](<https://ib-aid.com/en/transactions-in-firebird-acid-isolation-levels-deadlocks-and-update-conflicts-resolution/>) もう1つの非常に詳細な記事
291291 * Interbase 6 API Guide (FirebirdとInterbaseで共通) 63ページ以降
292292 * [Overview of transaction settings in Interbase](<http://conferences.embarcadero.com/article/32280>)
293293 * [Detailed explanation of parameters in Firebird](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)
294294 * [Overview of settings in Firebird](<http://fhasovic.blogspot.com/2005/02/transaction-isolation-levels-in.html>)
295295 * [Transaction isolation levels in FIBPlus](<http://www.devrace.com/en/fibplus/articles/3292.php>)
296296 * README.set_transaction.txt Firebird 2.5 ドキュメンテーションフォルダ。
297297
298298### トランザクション隔離レベル
299299
300300もし望むなら、トランザクションのパラメータプロパティに1行加えることで、トランザクション隔離レベルを変えることができる:
301301
302302 * `isc_tpb_read_committed`: 他のトランザクションによりコミットされたすべての変化をすべて見ることができる
303303 * `isc_tpb_concurrency`: スナップショットとも呼ばれる: データベースがトランザクションを始めた時を見ることができる。より大きなオーバーヘッドがある isc_tpb_read_committed。幽霊読み出しがないのでANSI直列化可能より優れている
304304 * `isc_tpb_consistency`: 安定性とも呼ばれる: データの安定した、直列化可能なビュー、しかしテーブルをロックしてしまう。これが必要なことはないだろう
305305
306306例:
307307```
308308SQLTransaction1.Params.text:='isc_tpb_read_committed';
309309```
310310
311311トランザクションに効果のあるパラメータを追加できる(ibconnection.ppソースファイルから引用および[[1]](<http://conferences.embarcadero.com/article/32280>))
312312
313313### アクセスモード
314314
315315読み取り専用または読み書き可能を許す
316316
317317 * `isc_tpb_read`: 読み取り許可read permission
318318 * `isc_tpb_write`: 読み取り+書き込み許可
319319
320320### ロック回避
321321
322322 * `isc_tpb_nowait`: もし他のトランザクションがレコードを編集しており、そして待たない
323323 * `isc_tpb_wait`: もし他のトランザクションがレコードを編集しており、その終了を待つ。重い競合で "live locks" を最小限にする([[2]](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)). タイムアウトバリュー以下を参照されたい
324324
325325### テーブル予約
326326
327327テーブル全体をロックする。
328328
329329 * `isc_tpb_shared`: 始めてこれを設定すると、1つ、あるいは複数のテーブルにlock_read または lock_write がかかる。テーブルに対するシェアされた読み取りまたは書き込みモード。
330330 * `isc_tpb_protected`: 始めてこれを設定すると、1つ、あるいは複数のテーブルにlock_read または lock_writeの両方がかかる。テーブルのロックオンは遅延したトランザクションのコストの代わりにデッドロックのない操作を可能にする。
331331 * `isc_tpb_lock_read`: 読み取りロックを設定する。テーブルをロックするときに設定。例えばisc_tpb_lock_read=CUSTOMERS
332332 * `isc_tpb_lock_write`: 読み取り/書き込みロック。どのテーブルをロックするか特定する。例えばe.g. isc_tpb_lock_read=CUSTOMERS
333333
334334組み合わせ:
335335
336336 * シェアされて、書き込みロック: 同時実行性もしくはコミットされた隔離を伴う書き込みトランザクションはテーブルをアップデートする。すべてのトランザクションがテーブルを読み取ることができる。
337337 * シェアされて、読み取りロック: どのトランザクションも読み取りまたはアップデートできる。
338338 * 保護されて、書き込みロック、読み取りロック: 他のトランザクションはテーブルをアップデートできない。同時実行性と読み取りトランザクションがテーブルを読むことができる。
339339 * 保護されて、読み取りロック: 他のトランザクションはテーブルをアップデートできない。どのトランザクションもテーブルを読み取ることができる。
340340
341341### レコードバージョン
342342
343343この設定は明らかに他のトランザクションによって変更されたレコードに対するisc_tpb_read_committedアイソレーションモードに対してのみ関連する:
344344
345345 * `isc_tpb_no_rec_version`: もっとも新しいレコードバージョンのみ読み取られる。isc_tpb_read_committedとともにバッチ/バルクinsertに有用である
346346 * `isc_tpb_rec_version`: 最も最近コミットされたバージョンが読み取られる、他のトランザクションがコミットされてない変更を持っているときでさえ。**注意: 確認すること** 。isc_tpb_no_rec_versionよりもオーバーヘッドがある
347347
348348### 様々なオプション
349349
350350完全性のためにFirebird/Interbase FPCコードの中にはいくつかのオプションがある。 おそらくバッチinsert/editの速度を上げるためにisc_tpb_no_auto_undoを用いるであろう。
351351
352352 * isc_tpb_exclusive (明らかにFirebirdで保護されている変換をする。[[3]](<http://tech.groups.yahoo.com/group/firebird-support/message/58653>)を参照されたい)
353353 * isc_tpb_verb_time (動詞時またはコミット時異なった制約に関連している。Firebird: 実装されていない、いつも動詞時を使う)
354354 * isc_tpb_commit_time (動詞時またはコミット時異なった制約に関連している。Firebird: 実装されていない、いつも動詞時を使う)
355355 * isc_tpb_ignore_limbo (無視されたトランザクションにより生成されたレコードを無視する。無視されたトランザクションはマルチデータベーストランアクションで2フェーズコミットを失敗する。将来これが必要となることはなさそうである)
356356 * isc_tpb_autocommit (このトランザクションを自動コミットする: 全てのステートメントは分離される。おそらく、特にJayBird JDBCドライバのためである。)
357357 * isc_tpb_restart_requests (明らかに他のトランザクションでアクティブであったコネクションのリクエストを探す、それを元に戻し、新しいトランザクションを再開する。)
358358 * isc_tpb_no_auto_undo (トランザクションレベルアンドゥログを無効にする、バッチアップデートで最大のスループットを出すために便利である。データを呼んでいるだけの時には効果がない。)
359359 * isc_tpb_lock_timeout (もし、isc_tpb_waitを用いているならロック解除のために待つ秒数を設定する。もしこの値がロック解除なしに到達すると、エラーが出される。)
360360
361361### Firebird と ISO トランザクション
362362
363363FirebirdトランザクションはISO/ANSIトランザクションレベルに1対1で当てはまっていない。要約は:
364364
365365 * ISO Read Committed=READ COMMITTED+RECORD_VERSION
366366 * ISO Read Committed=READ COMMITTED+NO RECORD_VERSION
367367 * ISO Repeatable Read=SNAPSHOT (CONCURRENCYとしても知られる)
368368 * ISO Serializable=SNAPSHOT TABLE STABILITY (CONSISTENCYとしても知られる)
369369
370370### 通常のコンビネーション
371371
372372デフォルトは読み取りコミットである(おそらく確認の必要がある)。
373373
374374#### バッチ / バルク INSERT
375375
376376isc_tpb_read_committed と isc_tpb_no_rec_version は良い組み合わせであろう: バッチが進行しているときに他のトランザクションが可能である。
377377
378378#### 読み取り専用トランザクション
379379
380380もし、データベースアクセスが読み取り専用であることを望むなら、このトランザクションパラメータを設定することでそのようにできる:
381381
382382 * `isc_tpb_read`
383383 * `isc_tpb_read_committed`
384384 * `isc_tpb_rec_version`
385385 * `nowait`
386386
387387この組み合わせはガーベージコレクションをブロックしないだろう、それは良いことである。 出典: [[4]](<http://tech.groups.yahoo.com/group/firebird-support/message/118748>)
388388
389389注意: [Firebird FAQ](<http://www.firebirdfaq.org/faq164/>) はもしデータベースを読み取り専用に設定しないならば、もし、読み取りだけでもデータベースファイルに書き込みアクセスが必要であることを示している(例えば gfixを用いて)。
390390
391391## リンクとさらなる情報
392392
393393以下のリストはFirebirdと関連するツールのさらなる情報に対するリンクである。
394394
395395 * [[Firebird embedded|Using Firebird embedded with FPC/Lazarus]]
396396
397397### Lazarus Firebird サンプル
398398
399399 * Sample Lazarus/Firebird application source code [[5]](<http://lazarus.freepascal.org/index.php/topic,13940.msg73617.html#msg73617>)
400400 * Firebird/SQLDB tutorials:
401401 * [[SQLdb Tutorial0/ja]]
402402 * [[SQLdb Tutorial1/ja]]
403403 * [[SQLdb Tutorial2/ja]]
404404 * [[SQLdb Tutorial3/ja]]
405405 * [[SQLdb Tutorial4/ja]]
406406
407407 * PP4S tutorials; cover Firebird installation on Windows as well:(訳注いずれのリンクもおかしい)
408408 * [Planning a Database](<http://www.pp4s.co.uk/main/tu-db-plan.html>)
409409 * [Installing Firebird](<http://www.pp4s.co.uk/main/tu-db-installingfirebird01.html>)
410410 * [Creating a Firebird database](<http://www.pp4s.co.uk/main/tu-db-firebird-create.html>)
411411 * [Editing a Firebird database](<http://www.pp4s.co.uk/main/tu-db-firebird-demo1.html>)
412412 * [Searching a Firebird database](<http://www.pp4s.co.uk/main/tu-db-firebird-demo2.html>)
413413 * [Creating and printing a report](<http://www.pp4s.co.uk/main/tu-db-firebird-demo3.html>)
414414 * [Creating and using stored procedures](<http://www.pp4s.co.uk/main/tu-db-firebird-demo4.html>)
415415
416416### ツール
417417
418418 * FlameRobin [Flamerobin site](<http://www.flamerobin.org/>) オープンソースのFirebird管理ツールである。Windows、Linux、Mac OSXで使える。特に推奨される。
419419 * Turbobird [Turbobird site](<https://github.com/motaz/turbobird>) オープンソースのFirebird管理ツール。TIBCOnnectionを用いてLazarusで書かれてある。
420420 * ibconsole : GUIでFirebird、Interbaseを管理するツール、Windows、Linuxで利用できる。
421421 * Lazarus Data Desktop - Lazarusレポジトリに含まれる。('tools/lazdatadesktop/'ディレクトリにある)
422422 * [LazSQLX](<http://lazsqlx.wordpress.com/>) マルチデータベースオープンソースデータベースマネジメントツール。LazarusでSQLDBとZeosの両方を用いて書かれている。Firebirdに対するサポートがある。
423423 * tiSQLEditor - [[tiOPF]]レポジトリの"Support Apps"ディレクトリに含まれる。コード補完サポートでSQLを書くために使われるツールである。スクリプトを実行、のちに組み立てるために、ある構築からスクリプトをアップグレードできる。Object Pascalアプリケーションのために様々な便利なコピー&ペースト機能を持つ。tiOPFにとって便利な(tiOPFのビジタークラスでクエリの結果からObject Pascalのコードテンプレートを生成する)多くの機能がある
424424
425425### Firebird
426426
427427 * The Firebird RDBMS [Firebird site](<http://firebirdsql.org/>). このサイトはFirebirdについて多くのドキュメンテーションを含む。
428428 * Firebird FAQ [[6]](<http://firebirdfaq.org/>). 例えば、たのRDBMSとの差異を示す便利なサイト。
429429 * 最近のツールとLibreOfficeの用い方を示す新しいサイト、FPCが間もなく加えられる。[Firebird](<http://www.controlpascal.com/firebird.htm>)
430430
431431---
432-*From the Free Pascal wiki, page "Firebird/ja", as the Internet Archive kept it on 2025-01-17. 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).*
432+*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