[英]creating trigger error Error: ORA-04076: invalid NEW or OLD specification
嘗試創建一個觸發器,以查看地址表中的郵政編碼,並將其與郵政編碼表中的郵政編碼匹配,並填充地址表的城市和國家/地區。 但是我收到以下錯誤:
錯誤:ORA-04076:無效的新舊規范
我不確定如何在此處使用NEW或OLD規范,有人可以幫忙嗎?
create or replace TRIGGER Addr_Zip
BEFORE INSERT OR UPDATE OF Zip ON ADDRESS
FOR EACH ROW
when (address.zip = Zip_Code.zip)
BEGIN
update address set Address.city = (select City from Zip_Code),
Address.State = (select State from Zip_Code),
Address.Country = (select Country from Zip_Code)
where address.zip = zip_code.zip;
END;
我們不發布SQL語句,而是使用:NEW使用PL / SQL分配更新當前記錄的值。 命名空間。
create or replace TRIGGER Addr_Zip
BEFORE INSERT OR UPDATE OF Zip ON ADDRESS
FOR EACH ROW
DECLARE
zip_rec zip_code%rowtype;
BEGIN
select * into zip_rec
from zip_code
where :NEW.zip = Zip_Code.zip;
:NEW.city = zip_rec.City ;
:NEW.State = zip_rec.State;
:NEW.Country = zip_rec.Country;
END;
此版本從ZIP_CODE記錄中選擇一個局部變量,以避免多次選擇。 當然,此觸發器應該完全沒有必要,因為正確規范化的數據模型不會包含所有重復的列。 但是您可能不想知道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.