Oracle
 sql >> база данни >  >> RDS >> Oracle

Тригерът зададе стойности за вмъкване на ред на нула

Първо трябва да решите:

  • или искате вмъкването или актуализацията да се провали, когато се извършва в нежелан момент
  • или искате вмъкването или актуализацията да бъдат обработени, но с колони, зададени на null тогава.

Не можете да имате и двете.

В случай, че искате да зададете колоните на NULL, това трябва да е ПРЕДИ Задейства INSERT/UPDATE, така че променените колони се записват в таблицата. (В тригер AFTER INSERT/UPDATE настройката на полетата на някаква стойност няма да има никакъв ефект, тъй като те не са написани.)

След това SET NEW.STAFFNO = NULL; не е валиден PL/SQL, това трябва да е :NEW.STAFFNO := NULL; вместо това.

CREATE OR REPLACE TRIGGER hi
  BEFORE INSERT OR UPDATE OF class_time ON class
  FOR EACH ROW 
WHEN (new.class_time NOT BETWEEN '09:00' AND '18:00')
BEGIN 
  :new.staffno := null; 
  :new.class_day := null; 
  :new.class_type := null; 
  :new.roomnum := null;
END; 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да отделя дял от таблица и да го прикача към друг в oracle?

  2. В Oracle как мога да открия датата, на която започва/завършва лятното часово време?

  3. simpleJdbcCall извикване на Pl/SQL процедура -- ORA-22922 несъществуваща LOB стойност

  4. вземете колона с малки букви от ResultSet, като използвате име на колона

  5. Oracle PL/SQL:Пример за динамичен SQL с използване на Execute Immediate