[我希望如果在插入'zone'为null时将触发该触发器,并将区域值从'null'更改为'sin',我认为问题出在if。
CREATE OR REPLACE TRIGGER ZONA_JUGADOR
BEFORE INSERT ON EQUIPOS FOR EACH ROW
BEGIN
IF :NEW.ZONA = NULL THEN
:NEW.ZONA:='SIN';
END IF;
END;
我正在做的插入句子:
VALUES ('eq47','01627208G','Miranda',NULL);
问题出在IF
中。 NULL
不等于某物,因此您不能使用
if :new.zona = null
但是
if :new.zona IS NULL
无论如何,也许您宁愿使用NVL
函数:
SQL> create table equipos (id varchar2(10), zona varchar2(10));
Table created.
SQL> create or replace trigger zona_jugador
2 before insert on equipos
3 for each row
4 begin
5 :new.zona := nvl(:new.zona, 'SIN');
6 end;
7 /
Trigger created.
SQL> insert into equipos(id, zona) values ('ba12', 'zona');
1 row created.
SQL> insert into equipos(id, zona) values ('eq47', null);
1 row created.
SQL> select * From equipos;
ID ZONA
---------- ----------
ba12 zona
eq47 SIN
SQL>