感谢您的阅读。我目前正在为一家假设商店开发一个约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 –