我正在嘗試使用觸發器來檢查用戶插入的板號是否已存在或不存在。如果找到,則顯示消息插入被阻止。有一些錯誤,但我無法解決它。以下是腳本:使用觸發器檢查表中是否存在數據並阻止插入
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」前面有一個。 –