Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Bộ kích hoạt chèn giá trị hàng thành null

Trước hết, bạn phải quyết định:

  • một trong hai bạn muốn việc chèn hoặc cập nhật không thành công khi nó được thực hiện vào thời điểm không mong muốn
  • hoặc bạn muốn phần chèn hoặc bản cập nhật được xử lý nhưng khi đó các cột được đặt thành rỗng.

Bạn không thể có cả hai.

Trong trường hợp bạn muốn đặt các cột thành NULL, đây phải là BEFORE Kích hoạt CHÈN / CẬP NHẬT, do đó các cột đã thay đổi được ghi vào bảng. (Trong trình kích hoạt SAU KHI CHÈN / CẬP NHẬT, cài đặt các trường thành một giá trị nào đó sẽ không có bất kỳ tác dụng nào, hãy lưu ý rằng chúng không được viết.)

Sau đó, SET NEW.STAFFNO = NULL; không phải là PL / SQL hợp lệ, phải là :NEW.STAFFNO := NULL; thay vào đó.

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. Làm cách nào để tự động tạo danh tính cho cơ sở dữ liệu Oracle thông qua khung Entity?

  2. Oracle:'=ANY ()' so với 'IN ()'

  3. SQLT trong 12c không thể thu thập số liệu thống kê

  4. chuyển đổi hàng thành cột trong oracle10g

  5. Oracle:Chỉ mục đa cột đơn hoặc hai chỉ mục cột đơn