感謝您的閱讀。我目前正在爲一家假設商店開發一個約10個實體的數據庫。因此,主要實體是Customer_Order,此觸發器的目的是在Customer_order中插入或更新一行時檢查客戶的郵政編碼是否爲空。如果它爲空,則觸發器應該發出警告。Oracle觸發器如果語句條件沒有得到滿足?
CREATE OR REPLACE TRIGGER Check_Order
BEFORE INSERT OR UPDATE ON Customer_Order
for each row
DECLARE ShipAddress customer.ship_address.post_code%TYPE;
BEGIN
IF (ShipAddress = '') then
RAISE_APPLICATION_ERROR(-20103, 'Shipping Address is empty');
END IF;
END;
.
run
我知道有沒有「其他」,但我沒有任何其他操作以外,以更新其它表。 不要擔心ShipAddress,我已經試過這個更簡單的屬性,它根本不會觸發。所發生的只是該行將被插入或更新,所以它不符合條件。我嘗試了各種方法,比如「if(Payment_No ='PAYM0001')」,它不起作用,是因爲我使用的是每個而不是語句級觸發器嗎?
啊我明白了。我實際上不知道如何創建一個名爲addressType的類型來聲明它不爲null。在我的系統中,所有客戶和員工(「人員」的子類型)都繼承了包含其各種值的地址類型,並且我無法弄清楚如何在不製作對象表的情況下將其實際設置爲NOT NULL。如果你知道一種方式,我會很感激,如果你可以花時間分享它。謝謝你的幫助! –
@MoMoosa:看看我編輯的例子沒有如何聲明你的類型的屬性不爲null –