![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
WindowsXPのOracle9i環境です。
以下のようなトリガーを作成しました。
create or replace trigger kan_trg
after update or insert on t_kan
declare
begin
execute immediate 'create or replace view V_test as select
・・
from t_kan with read only';
end;
/
その後、試しに「insert into t_kan ・・・」 と実行してみましたが、「ORA-04092:トリガーはCOMMITできません」が発生します。
色々調べましたがトリガーの中にCOMMIT文を入れることはできないようです。どのようにすれば解決するか、ご教示いただけませんでしょうか?
宜しくお願い致します。
No.2
- 回答日時:
insert into したセッションとは別のセッションで検索しようとしていませんか。
AFTERトリガでもCOMMITしていないデータは別セッションからは検索できませんよ。
ご回答ありがとうございます!
同一セッションで検索してますし、commitもしております。
他に何か考えられることありますでしょうか?
No.1
- 回答日時:
「create any view」権限を持ったユーザーで
create or replace procedure kan_proc(str in varchar2)
is
PRAGMA AUTONOMOUS_TRANSACTION;
-- ↑ 自律型トランザクション プラグマ
begin
execute immediate str;
end;
/
create or replace trigger kan_trg
after update or insert on t_kan
begin
kan_proc('create or replace view V_test as select * from t_kan with read only');
end;
/
「create any view」権限はロール経由では無効になるので、DBA権限を
持ったユーザーでプロシージャを作っても実行時「権限不足」になるので
注意。
ご回答ありがとうございます!
「自律型トランザクション プラグマ」というのが調べても高度でよく理解できませんでしたが、とりあえずビューは作成できたようです。
ところが、t_kanテーブルにinsert文にてテストしてみましたが、トリガーにて「after」指定にもかかわらず、作成されたビューの中にはinsertしたレコードが入ってきませんでした。
それでは意味がないのですが、なぜなのでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php エラー 2 2022/10/23 16:43
- その他(ゲーム) クロノ・トリガーのリメイク 2 2022/11/12 09:54
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「A,B組の女子の氏名のよみ。 1 2023/05/16 15:28
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
ポリスとシェリフの違い 及び...
-
ストアドプロシジャで、TRUNCAT...
-
データベースがちゃんと作成さ...
-
会社の〇〇部と〇〇課の違いっ...
-
IE6の「ディスカッション」は...
-
支配人の代理権
-
別のスキーマのテーブルアップ...
-
Access VBAで行ラベルが定義さ...
-
Accessのマクロでモジュールを...
-
エクセルVBAでUserFormを起動し...
-
今日の日付が入った行のデータ...
-
或るプロシージャの呼び出し元判定
-
キャッシュを使わずにSELECTを...
-
SQL Server で 翌月10日を取...
-
VBA プロシージャの名前の取得
-
Accessでグローバル変数を宣言...
-
likeとsubstrの使いわけについて
-
SQL文のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
会社の〇〇部と〇〇課の違いっ...
-
別のスキーマのテーブルアップ...
-
権限で「委任」「専決」とあり...
-
異なるスキーマのビューを元に...
-
Oracle 10g 他スキーマの参照権...
-
DBMS_LOCK.SLEEPについて
-
トリガーにてビューを作成しよ...
-
テーブル権限確認
-
Poweruser権限でのIPアドレス変...
-
支配人の代理権
-
Oracle 10gで順序sequenceの作...
-
「セットアップはシステム管理...
-
Oracleでオブジェクト権限を調...
-
roleの権限確認方法
-
ストアドプロシジャで、TRUNCAT...
-
「バッチジョブとしてログオン...
-
oracleユーザーの権限確認方法...
-
参照権限の付与方法
おすすめ情報