トランザクションブランチで,TAMアクセスのエラーが起こった場合は,UAPからabort()を呼び出して,そのグローバルトランザクションのプロセスを異常終了させてください。
同じグローバルトランザクション内でも,以前にアクセスした関数によっては,一つのレコードに対するアクセスがエラーリターンする場合があります。また,同じレコードへのアクセスでも,同じグローバルトランザクションに属するときと,異なるグローバルトランザクションからの場合では,結果が異なります。
同じレコードに対して関数を複数回呼び出したときの処理結果を表4-7と表4-8に示します。
表4-7 同じレコードに対して関数を複数回呼び出したときの処理結果(一つのグローバルトランザクション)
前回呼び出した関数 | 今回呼び出した関数 | 結果またはエラーリターンする値 |
---|---|---|
トランザクション内で,まだ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) |
表4-8 同じレコードに対して関数を複数回呼び出したときの処理結果(異なるグローバルトランザクション)
前回呼び出した関数 | 今回呼び出した関数 | 結果またはエラーリターンする値 |
---|---|---|
トランザクション内で,まだ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 |