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

Oracle APEX Database Trigger - Sự cố với các cột cơ sở dữ liệu tham chiếu

Bạn có thể thực hiện đối sánh chuỗi để kiểm tra từng hàng:

create or replace trigger "ORDER_PARTS_T1"
BEFORE
insert or update on "ORDER_TABLE"
for each row
begin
  update PARTS_TABLE p
  set p.ASSIGNED_ORDER_NUMBER = :new.ORDER_NUMBER
  where instr(':' || :new.ORDER_PARTS_LIST || ':'
             ,':' || p.PART_NUMBER || ':') > 0;
end;

Vì vậy, ví dụ:nếu ORDER_PARTS_LIST là '123:456:789' , INSTR sẽ tìm các kết quả phù hợp cho các id 123, 456 và 789, nhưng không phải 124, 45 hoặc 8, chẳng hạn.

Khi các bộ phận bị xóa khỏi một đơn đặt hàng, bạn sẽ cần một trình kích hoạt khác để NULL các trường thích hợp trong PARTS_TABLE :

create or replace trigger "ORDER_PARTS_T1"
BEFORE
update on "ORDER_TABLE"
for each row
begin
  update PARTS_TABLE p
  set p.ASSIGNED_ORDER_NUMBER = NULL
  where instr(':' || :new.ORDER_PARTS_LIST || ':'
             ,':' || p.PART_NUMBER || ':') = 0
  and instr(':' || :old.ORDER_PARTS_LIST || ':'
             ,':' || p.PART_NUMBER || ':') > 0;
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. Tham gia bên ngoài Oracle (+) và các giá trị không đổi

  2. Ứng dụng khách máy tính để bàn miễn phí cho Oracle?

  3. Làm thế nào để nhóm theo tháng bao gồm tất cả các tháng?

  4. Cách tìm nạp chuỗi nhiều đối sánh bằng biểu thức chính quy

  5. Cách xóa một cột khỏi chế độ xem