アプリ版:「スタンプのみでお礼する」機能のリリースについて

Oracle8.1.7にて、あるAユーザーの所有物を全てExportし、その後、Bユーザーの所有物としてImportしようとすると、データベーストリガーのImport時にエラーが発生します。その他テーブルのImportは全て、成功しています。
(FROMUSER=A TOUSER=Bとしてimpしています。)
そこで、LOGを見てみると、データベーストリガーのCreate時にトリガー自体はBユーザーの所有物としてImportしようとしているが、そのトリガー作成SQL文内のテーブル参照部分がAの所有物として指定されている為、エラーが発生しているという事がわかりました。
create trigger B.trigger_name ~ on A.table_name
となっていました。
これは、impの仕様?バグ?なのでしょうか?それとも、なにか他にImport時に指定するオプションがあるのでしょうか?
回避方法等ご存知でしたら教えてください。

あと、このCreate Trigger文をSQL PLUSに手動で貼りつけて実行させようとしたら、何の反応もありませんでした。
まるで、このコマンドを認識していないという感じでした。SQL PLUSではCreate Trigger文は処理されないのでしょうか?因みにSQL Worksheetにて実行は出来ました。
こちらもご存知の方お願いします。

A 回答 (2件)

#1です。



> トリガーを作成する時にあえて、テーブルにユーザー指定を行っていると、この
> 様な事になってしまうのですか?imp/expでユーザー変更オプション指定しても
> そこまでは変更してくれないという事なんですね?

その通りです。これはトリガーに限ったことではなく、
テーブルなどOracleのオブジェクト全般そうみたいです。

> あと、SQL*PLUSで;はつけたのですが。。。
> /はどういう時につけるのでしょう。普通select文などでは;でいいですよね。違> いはなんですか?

;は文の終わりを意味します。したがって文末につけます。

/は文の最終行を示します。これは文のあと1改行してから/だけの行を入れます。
文の直後につけることは出来ません。

つまり、入力する場所だけの違いで、意味はほとんど同じです。
ちなみに、これはSelect文でも同じです。
    • good
    • 0
この回答へのお礼

何度も回答ありがとうございました。原因がわかりすっきりしました。

お礼日時:2003/03/24 23:22

EXP/IMPでそのような不具合があるということは聞いたことがありません。


もしかしてAにトリガーを作った時、テーブル名をユーザー名指定(A.table_name)
で作ってたりしませんか?

それとSQL*PLUSでトリガーは普通に作成することが出来ます。
Create Triggerが実行されないのはもしかして末尾に/もしくは;
をつけてないためではないでしょうか。
    • good
    • 0
この回答へのお礼

お礼が遅れてすいません。投稿があった時にメールを送信するにチェックしてたはずなのですが、来なかったので全然見てませんでした。ごめんなさい。本題ですが、トリガーを作成する時にあえて、テーブルにユーザー指定を行っていると、この様な事になってしまうのですか?imp/expでユーザー変更オプション指定してもそこまでは変更してくれないという事なんですね?
あと、SQL*PLUSで;はつけたのですが。。。
/はどういう時につけるのでしょう。普通select文などでは;でいいですよね。違いはなんですか?
お礼ではなくて、再質問になってしまいました。返答頂ければ、うれしいです。

お礼日時:2003/03/17 20:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す