質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Oracle Database 12c

Oracle Database 12cは、RDBMS製品です。世界初の商用RDBMSであるOracle Databaseのバージョンで、2013年にリリース。クラウド対応を考慮して設計されました。主な機能には、マルチテナント対応やインメモリデータベースの実装などがあります。

Q&A

2回答

1355閲覧

OracleのBeforeトリガー作成

Ueshi

総合スコア4

Oracle Database 12c

Oracle Database 12cは、RDBMS製品です。世界初の商用RDBMSであるOracle Databaseのバージョンで、2013年にリリース。クラウド対応を考慮して設計されました。主な機能には、マルチテナント対応やインメモリデータベースの実装などがあります。

0グッド

0クリップ

投稿2020/05/29 10:07

イメージ説明

前提・実現したいこと

OracleのBeforeトリガーで更新日とタイムスタンプを作成したい。

発生している問題・エラーメッセージ

添付ファイルのようなトリガーを作成して、実行したのですが、
「:NEW」が予約語と認識されない状況で、トリガーが作成されません。
(バインド入力の画面が表示される)

自社環境では問題なく作成できましたが、客先環境では上記のような状況で作成できません。
Oracleのバージョンは同じです。

※トリガー名やテーブル名は、仮のものです。

試したこと

・対象のユーザの権限をCREATE SESSSION,CREATE TRRIGERのみに設定して
自社環境で実行したが、問題なく作成できる。
・改行や空白スペースなどをいれて自社環境で実行したが
同様な事象が再現しない。

補足情報(FW/ツールのバージョンなど)

〇バージョン
Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production

どんな情報でも構いませんので、情報を頂ければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ueshi

2020/05/29 10:43

ご指摘いただきありがとうございます。CREATE TABLE,CREATE TRIGGERのコードを追記します。 CREATE TABLE M_SYSTEM ( SYS_CD varchar2(20) NOT NULL , SYS_INFO varchar2(1000) , INS_DT date DEFAULT SYSDATE NOT NULL , INS_CD varchar2(10) DEFAULT 'RSOL' NOT NULL , UPD_DT date DEFAULT SYSDATE NOT NULL , UPD_CD varchar2(10) DEFAULT 'RSOL' NOT NULL , timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL , CONSTRAINT ATM_SYSTEM_PK PRIMARY KEY(SYS_CD) ); create or replace TRIGGER M_SYSTEM_BFR BEFORE UPDATE ON M_SYSTEM FOR EACH ROW BEGIN :NEW.UPD_DT := SYSDATE; :NEW.timestamp := CURRENT_TIMESTAMP; END;
KOZ6.0

2020/05/30 03:54

SQL*Plus で実行してみては?
guest

回答2

0

sqlplusでCREATE TRIGGERを実行した時のエラーメッセージをそのまま質問に追記しては?

Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production

Oracle12.1はバグが多いバージョンですから、パッチを適応しないで実務で運用するのは避けましょう。さっさとサポート契約してオラクル・サポートからパッチをもらってください。

投稿2020/05/29 10:51

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

コード

CREATE TABLE M_SYSTEM
(
SYS_CD varchar2(20) NOT NULL
, SYS_INFO varchar2(1000)
, INS_DT date DEFAULT SYSDATE NOT NULL
, INS_CD varchar2(10) DEFAULT 'RSOL' NOT NULL
, UPD_DT date DEFAULT SYSDATE NOT NULL
, UPD_CD varchar2(10) DEFAULT 'RSOL' NOT NULL
, timestamp timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL
, CONSTRAINT ATM_SYSTEM_PK PRIMARY KEY(SYS_CD)
);

create or replace TRIGGER M_SYSTEM_BFR BEFORE UPDATE ON M_SYSTEM
FOR EACH ROW BEGIN
:NEW.UPD_DT := SYSDATE;
:NEW.timestamp := CURRENT_TIMESTAMP;
END;

投稿2020/05/29 10:44

Ueshi

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問