- ベストアンサー
Oracleデータベーストリガーのインポート
- Oracle8.1.7にて、Aユーザーの所有物をExportし、Bユーザーの所有物としてImportする際に、データベーストリガーのImport時にエラーが発生する
- データベーストリガーのCreate時に、トリガー自体はBユーザーの所有物としてImportしようとしているが、トリガー作成SQL文内のテーブル参照部分がAの所有物として指定されているためエラーが発生している
- SQL PLUSではCreate Trigger文は処理されないため、SQL Worksheetにて実行する必要がある
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 > トリガーを作成する時にあえて、テーブルにユーザー指定を行っていると、この > 様な事になってしまうのですか?imp/expでユーザー変更オプション指定しても > そこまでは変更してくれないという事なんですね? その通りです。これはトリガーに限ったことではなく、 テーブルなどOracleのオブジェクト全般そうみたいです。 > あと、SQL*PLUSで;はつけたのですが。。。 > /はどういう時につけるのでしょう。普通select文などでは;でいいですよね。違> いはなんですか? ;は文の終わりを意味します。したがって文末につけます。 /は文の最終行を示します。これは文のあと1改行してから/だけの行を入れます。 文の直後につけることは出来ません。 つまり、入力する場所だけの違いで、意味はほとんど同じです。 ちなみに、これはSelect文でも同じです。
その他の回答 (1)
- takopon
- ベストアンサー率69% (27/39)
EXP/IMPでそのような不具合があるということは聞いたことがありません。 もしかしてAにトリガーを作った時、テーブル名をユーザー名指定(A.table_name) で作ってたりしませんか? それとSQL*PLUSでトリガーは普通に作成することが出来ます。 Create Triggerが実行されないのはもしかして末尾に/もしくは; をつけてないためではないでしょうか。
お礼
お礼が遅れてすいません。投稿があった時にメールを送信するにチェックしてたはずなのですが、来なかったので全然見てませんでした。ごめんなさい。本題ですが、トリガーを作成する時にあえて、テーブルにユーザー指定を行っていると、この様な事になってしまうのですか?imp/expでユーザー変更オプション指定してもそこまでは変更してくれないという事なんですね? あと、SQL*PLUSで;はつけたのですが。。。 /はどういう時につけるのでしょう。普通select文などでは;でいいですよね。違いはなんですか? お礼ではなくて、再質問になってしまいました。返答頂ければ、うれしいです。
お礼
何度も回答ありがとうございました。原因がわかりすっきりしました。