-1
SQLデータベースのトリガーをいくつか作成しています。私は正常にINSERTとSYSDATEを比較する2つのトリガを作成しました。この3番目の場合は、挿入された値が10より大きくないことを確認しようとしています。以下はトリガーとそれを実行するテストデータです。私はその問題が価値評価を宣言することと関係していると信じています。数値変数を使用したSQLトリガーの作成
CREATE OR REPLACE TRIGGER trig_rating_ck
BEFORE INSERT OR UPDATE OF rating ON reviews
FOR EACH ROW
BEGIN
IF (NEW.rating > 10) THEN
RAISE_APPLICATION_ERROR(-20000, 'Rating has to be between 1 and 10');
END IF;
END trig_rating_ck;
/
--TEST DATA
INSERT INTO reviews (review_id, reviewer_id, venue_id, description, rating, date_posted)
VALUES (seq_reviews.NEXTVAL, 10000,10000, 'THIS WAS GREAT', '11', '06-APR-2016');
エラーは何ですか? – bassrek
'if(:new.rating> 10)'に 'new'の前にコロンを置く必要があるので、トリガーを作成するときにエラーが発生すると思います。日付リテラルまたは明示的な 'to_date'を使用するのではなく、日付列に文字列を挿入しようとしているため、' insert'文を実行する際にエラーが発生する可能性があります。 –