テーブルロックは、[メインソース特性]や[リンク特性]の[共有]特性の設定を「N=なし」 または、「R=読込」 に設定した時に発行されます。「N=なし」の場合、Magic xpaはテーブルを排他的にロックします。排他ロックに対する動作は、使用するDBMSに依存します。多くのDBMSは、排他ロックをサポートしています。例えば、Oracle の場合は、テーブルは排他的にロックされますが他のユーザがそのテーブルを読み込むことができます。このため、[共有]特性の設定を「N=なし」 にすることは正しくありません。
開発者は、使用するDBMSの排他ロックについての制限をあらかじめ知っておく必要があります。
ロックはトランザクション内でのみ有効です。従って、テーブルロックと一緒にレコードレベルのトランザクションを使用することはできません。Magic xpaは、テーブル全体がロックされたように動作します。他のユーザは、同じテーブルの他のレコードをアクセスすることはできません。
並行性が失われるため、テーブルロックは、できる限り回避するようにしなけばなりません。
開発者によって意図的にテーブルレベルでのロックを発行させることができます。ただし、排他ロックをかけると上記のように並行性が失われることになります。
[アクセス]モードと[共有]モードの両方で「W=書込」に設定することで、Magic xpaはデータベースロックを発行します。もしトランザクションが遅延モードであれば、データベースロックは発行されず、Mglockファイルを使用するMagicロックが発行されます。Magicロックの場合は、トランザクションが終了した時だけロックが解除されます。
ブラウザタスク内では、物理トランザクションがないためデータベースロックやテーブルロックは発行されません。論理的な Magicロックのみが発行されます。
MS-SQL Server の場合、レコードロックのデフォルトは物理ロックです。Magic xpaは、データベースに対して SELECT...UPDLOCK のコマンドを送ります。(Oracleの SELECT...FOR UPDATEのようなものです。)旧バージョンのデフォルトは論理ロックでした。(通常の SELECTステートメントが全てのセレクトされたカラムに対して送られます。)デフォルトの違いについては、「SQLに関する考慮事項」の「MS-SQL Serverデータベースゲートウェイ」の説明を参照してください。
テーブルロック時にリトライする時間は、[動作環境/動作設定タブ/コマンド処理のリトライ間隔] (MAGIC.INIのRetryOperationTime) で制御されます。デフォルト値は600秒です。