4.2.5 トランザクションとTAMアクセスの関係
トランザクションブランチで,TAMアクセスのエラーが起こった場合は,UAPからabort()を呼び出して,そのグローバルトランザクションのプロセスを異常終了させてください。
同じグローバルトランザクション内でも,以前にアクセスした関数によっては,一つのレコードに対するアクセスがエラーリターンする場合があります。また,同じレコードへのアクセスでも,同じグローバルトランザクションに属するときと,異なるグローバルトランザクションからの場合では,結果が異なります。
同じレコードに対して関数を複数回呼び出したときの処理結果を表4-7と表4-8に示します。
前回呼び出した関数 |
今回呼び出した関数 |
結果またはエラーリターンする値 |
---|---|---|
トランザクション内で,まだTAMテーブルにアクセスする関数を呼び出していない |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_rewrite(入力前提の更新) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
○ |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_read (参照目的の入力) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_rewrite(入力前提の更新) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_read (参照目的の入力 排他を指定) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
○※1 |
|
dc_tam_rewrite(入力前提の更新) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_read (更新目的の入力) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
○ |
|
dc_tam_rewrite(入力前提の更新) |
○ |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_read_cancel (入力の取り消し) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
DCTAMER_SEQENCE(01732)※2 |
|
dc_tam_rewrite(入力前提の更新) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_rewrite (入力前提の更新) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
DCTAMER_EXREWRT(01734) |
|
dc_tam_rewrite(入力前提の更新) |
○ |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_write (更新,または追加) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_rewrite(入力前提の更新) |
DCTAMER_SEQENCE(01732) |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_delete (削除) |
dc_tam_read(参照目的の入力) |
DCTAMER_NOREC(01731) |
dc_tam_read(参照目的の入力 排他を指定) |
DCTAMER_NOREC(01731) |
|
dc_tam_read(更新目的の入力) |
DCTAMER_NOREC(01731) |
|
dc_tam_read_cancel(入力の取り消し) |
DCTAMER_NOREC(01731) |
|
dc_tam_rewrite(入力前提の更新) |
DCTAMER_NOREC(01731)※3 |
|
dc_tam_write(更新) |
DCTAMER_NOREC(01731) |
|
dc_tam_write(追加) |
○ |
|
dc_tam_delete(削除) |
DCTAMER_NOREC(01731) |
前回呼び出した関数 |
今回呼び出した関数 |
結果またはエラーリターンする値 |
---|---|---|
トランザクション内で,まだTAMテーブルにアクセスする関数を呼び出していない |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○ |
|
dc_tam_read(更新目的の入力) |
○ |
|
dc_tam_read_cancel(入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
○ |
|
dc_tam_write(追加) |
○ |
|
dc_tam_delete(削除) |
○ |
|
dc_tam_read (参照目的の入力) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○※2 |
|
dc_tam_read(更新目的の入力) |
○※2 |
|
dc_tam_read_cancel(入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
○※2 |
|
dc_tam_write(追加) |
DCTAMER_EXKEY(01735) |
|
dc_tam_delete(削除) |
○※2 |
|
dc_tam_read (参照目的の入力 排他を指定) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○※2 |
|
dc_tam_read(更新目的の入力) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read_cancel(入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_write(追加) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete(削除) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read (更新目的の入力) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read(更新目的の入力) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read_cancel (入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_write(追加) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete(削除) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read_cancel (入力の取り消し) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
○※4,※5 |
|
dc_tam_read(更新目的の入力) |
○※4,※5 |
|
dc_tam_read_cancel (入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
○※4,※5 |
|
dc_tam_write(追加) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete(削除) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_rewrite (入力前提の更新) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read(更新目的の入力) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read_cancel (入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_write(追加) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete(削除) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_write (更新,または追加) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read(更新目的の入力) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read_cancel (入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_write(追加) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete(削除) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete (削除) |
dc_tam_read(参照目的の入力) |
○ |
dc_tam_read(参照目的の入力 排他を指定) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read(更新目的の入力) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_read_cancel(入力の取り消し) |
−※1 |
|
dc_tam_rewrite(入力前提の更新) |
−※1 |
|
dc_tam_write(更新) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_write(追加) |
DCTAMER_LOCK(01736)※3 |
|
dc_tam_delete(削除) |
DCTAMER_LOCK(01736)※3 |