ユーザーが挿入しているプレート番号が既に存在するかどうかを確認するためにトリガーを使用しようとしています。いくつかのエラーがありましたが、解決できません。以下はスクリプトですトリガーを使用してデータが既に表に存在していて、挿入をブロックしている場合
CREATE OR REPLACE TRIGGER trig_check_plate_no
BEFORE INSERT OR UPDATE OF plate_number ON cars
FOR EACH ROW
WHEN(NEW.plate_number IS NOT NULL)
DECLARE
vn_count NUMBER(10);
BEGIN
SELECT COUNT(*)
INTO vn_count
FROM cars
WHERE plate_number = NEW.plate_number
IF(:vn_count>0)
THEN DBMS_OUTPUT.PUT_LINE('Insertion blocked.');
ELSE DBMS_OUTPUT.PUT_LINE('Data inserted.');
END IF;
END trig_check_plate_no;
/
どうすれば解決できますか?
DBMS_OUTPUT.PUT_LINEはOracleです。この質問には正しくタグ付けされていますか? –
一意のインデックスを作成します。 –
ユニークなインデックスまたは(より良い)ユニークな制約を作成します。しかし、あなたの引き金に(主な)問題に答えるためには、コロンを後方に持っていなければなりません。 「NEW」が出現するたびにコロン(:)が必要です。そして、あなたは "vn_count"の前に一つも持ってはいけません。 –