4

firebird (バージョン 2.1 を使用) でトランザクションに関連するメタデータを使用するにはどうすればよいですか?

たとえば、次のようになります。

1) isql セッションを開き、いくつかのテーブルを変更し、トランザクションを開いたままにします。

2) 別の isql セッションを開き、次のクエリを実行します。

SELECT * FROM RDB$TRANSACTIONS;

行を返しません。この情報を取得するために有効にする必要がある特別なものはありますか?

4

1 に答える 1

1

テーブルRDB$TRANSACTIONSは、分散トランザクション(つまり、複数のデータベースに対して実行されるトランザクション)にのみ使用されます。通常のトランザクションを監視するには、代わりにテーブルMON$TRANSACTIONSを使用します。

MON$TRANSACTIONS (started transactions)
  - MON$TRANSACTION_ID (transaction ID)
  - MON$ATTACHMENT_ID (attachment ID)
  - MON$STATE (transaction state)
       0: idle
       1: active
  - MON$TIMESTAMP (transaction start date/time)
  - MON$TOP_TRANSACTION (top transaction)
  - MON$OLDEST_TRANSACTION (local OIT number)
  - MON$OLDEST_ACTIVE (local OAT number)
  - MON$ISOLATION_MODE (isolation mode)
       0: consistency
       1: concurrency
       2: read committed record version
       3: read committed no record version
  - MON$LOCK_TIMEOUT (lock timeout)
      -1: infinite wait
       0: no wait
       N: timeout N
  - MON$READ_ONLY (read-only flag)
  - MON$AUTO_COMMIT (auto-commit flag)
  - MON$AUTO_UNDO (auto-undo flag)
  - MON$STAT_ID (statistics ID)
于 2012-11-28T08:55:52.383 に答える