DUPLICATE_RECORD
là một thủ tục bị hạn chế và bạn không thể sử dụng nó trong WHEN-VALIDATE-RECORD
kích hoạt (hoặc bất kỳ loại nào khác cùng loại).
Khi bạn phải điều hướng đến bản ghi tiếp theo (nếu bạn muốn sao chép nó), ngay cả khi bạn đặt thủ tục hạn chế đó vào một đơn vị chương trình PL / SQL khác, mọi thứ sẽ chỉ phổ biến và - cuối cùng - nêu ra cùng một lỗi. Vậy là ... bạn không gặp may.
Ngay cả khi bạn đã viết một thủ tục (được lưu trữ) sẽ chèn hàng "Jr" đó vào cơ sở dữ liệu ở đâu đó phía sau cảnh, bạn phải tìm nạp các giá trị đó vào màn hình. Dưới dạng EXECUTE_QUERY
là cách để làm điều đó và vì nó là (nhưng một thủ tục bị hạn chế khác), điều đó cũng sẽ không hoạt động.
Nếu bạn định xóa khối dữ liệu và điền nó theo cách thủ công (bằng cách sử dụng vòng lặp), bạn phải điều hướng đến bản ghi tiếp theo (và tiếp theo, và tiếp theo) với NEXT_RECORD
, và đó lại là một thủ tục bị hạn chế. Bên cạnh đó, nếu đó là một khối dữ liệu (và đúng là như vậy), thì bạn thực sự sẽ tạo bản sao cho tất cả các bản ghi sau khi bạn lưu các thay đổi như vậy - nó sẽ không thành công với vi phạm ràng buộc duy nhất (điều này tốt) hoặc bạn tạo bản sao (điều này tệ hơn).
BTW có vấn đề gì với WHEN-NEW-RECORD-INSTANCE
? Bạn gặp vấn đề gì khi sử dụng nó?