Làm cách nào để lấy ngày và id hàng?
Giả sử đây là các cột trên bảng ORDER của bạn được gọi là DELIVERY_DATE và ID trình kích hoạt của bạn sẽ trông giống như sau:
CREATE OR REPLACE TRIGGER your_trigger_name
BEFORE UPDATE ON Order
FOR EACH ROW
BEGIN
if :new.delivery_date != :old.delivery_date
then
UPDATE Delivery d
set d.delivery_date = :new.delivery_date
where d.order_id = :new.id;
end if;
END;
Lưu ý mệnh đề FOR EACH ROW:điều đó là cần thiết để tham chiếu các giá trị từ các hàng riêng lẻ. Tôi đã sử dụng cấu trúc IF để kiểm tra xem có thực thi CẬP NHẬT khi Giao hàng hay không. Nếu bạn không có logic nào khác trong trình kích hoạt của mình, bạn có thể viết nó như thế này ...
CREATE OR REPLACE TRIGGER your_trigger_name
BEFORE UPDATE OF delivery_date ON Order
FOR EACH ROW
BEGIN
UPDATE Delivery d
set d.delivery_date = :new.delivery_date
where d.order_id = :new.id;
END;
Tôi đã trả lời câu hỏi mà bạn đã hỏi, nhưng, ngoài ra, tôi sẽ chỉ ra rằng mô hình dữ liệu của bạn là chưa tối ưu. Một thiết kế chuẩn hóa phù hợp sẽ chỉ giữ DELIVERY_DATE trên một bảng:DELIVERY có vẻ là nơi hợp lý cho nó.