此问题已在此处有答案:
Update columns with Null values(5个答案)
4天前关闭。
我有下面的表订单(Student_ID,Order_ID,order_date,completed,payment,card_no,total_price)。我想创建一个触发器,如果付款是卡,则禁止按顺序插入值,但缺少card_info。
create or replace trigger check_card_info
before insert on orders
for each row
begin
if (:new.Payment='card' and :new.card_No=null) then
raise_application_error(-20002,'card info is missing');
end if;
end;
.
我已经尝试过了。它创建的触发器没有错误,但逻辑不起作用。按逻辑它应该禁止插入以下值,但它没有。insert into orders values (21200122, 11,'01-FEB-2023','no', 'card', null, 150);
2条答案
按热度按时间k97glaaz1#
为什么不向表中添加约束?
9lowa7mx2#
如果它必须是一个触发器,那么你写的代码是 close;只是没有东西 * 等于 *
null
。你不能检查是否card_no = null
,而是检查是否card_no is null
。在代码的其余部分,有几个反对意见:
when
子句而不是if-then-else
'01-FEB-2023'
),并且不依赖于隐式数据类型转换。(哪一个?这取决于那些设置)。插入适当的日期数据类型值,或者作为日期文字(这就是我在下面的示例中所做的),或者使用具有适当格式模型的to_date
函数因为你没有提供表的描述,我猜。
触发器:
测试:第一行无效(缺少card_no):
有效行: