このチュートリアルに基づいて自動インクリメント主キーベースでテーブルを作成しようとして、人生の過去 2 時間を無駄にしました。これは、タイムスタンプと、同じテーブル内のタイムスタンプと呼ばれるテーブルです...
テーブルを作成するときに、オラクルがこれを問題としてフラグ付けしないのはなぜですか?
入力するコマンドのシーケンスは次のとおりです。
テーブルの作成:
CREATE TABLE myTable (id NUMBER PRIMARY KEY, field1 TIMESTAMP(6), timeStamp NUMBER, );
シーケンスの作成:
CREATE SEQUENCE test_sequence START WITH 1 INCREMENT BY 1;
トリガーの作成:
CREATE OR REPLACE TRIGGER test_trigger BEFORE INSERT ON myTable REFERENCING NEW AS NEW FOR EACH ROW BEGIN SELECT test_sequence.nextval INTO :NEW.ID FROM dual; END; /
これが私が得るエラーメッセージです:
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-320: the declaration of the type of this expression is incomplete or malformed
「timestamp」という単語が含まれる 2 行を含まない組み合わせは問題なく動作します。キーワードと列名を区別するには構文で十分だと思っていたでしょう。
私が言ったように、テーブルが正常に作成される理由がわかりませんが、トリガーを作成しようとするとオラクルが失敗します...
明確化
問題は、キーワードである場合とそうでない場合があるタイムスタンプという列があることです。私の問題は、テーブルを作成したときではなく、トリガーを作成しようとしたときにバーフが発生した理由です。少なくとも警告が表示されると予想していました。
とは言っても、Oracle を数時間使用したことで、エラー レポートの詳細度が大幅に低下したように見えます。
これが Oracle のバグである場合、サポート契約を結んでいない人はどのように報告するのでしょうか? 一部のコードをMySQLからOracleに移行する必要があるため、エクスプレスバージョンで遊んでいます。