Tạo một liên kết cơ sở dữ liệu một cách nhanh chóng có vẻ như là một điều bất thường để làm; lược đồ của bạn thường phải tĩnh và ổn định. Tuy nhiên, nếu bạn phải làm vậy, sẽ đơn giản hơn nếu gói bản cập nhật và liên kết trong một quy trình hoặc chỉ đưa ra hai câu lệnh - có lẽ bất cứ điều gì thực hiện cập nhật đều được kiểm soát khá tốt, nếu không, bạn sẽ phải đối phó với nhiều người kích hoạt nhiều thời gian, điều này thậm chí sẽ còn lộn xộn hơn.
Bạn có thể làm cho việc này hoạt động bằng cách thêm PRAGMA autonomous_transaction;
với trình kích hoạt của bạn, như được minh họa cho một vấn đề tương tự (tạo chế độ xem thay vì tạo liên kết) trong câu trả lời này , nhưng tôi không có khả năng kiểm tra điều đó vào lúc này.
create or replace
TRIGGER CreateLinkTrigger
after UPDATE of Year ON tableInit
for each row
DECLARE
add_link VARCHAR2(200);
PRAGMA autonomous_transaction;
BEGIN
...
Bạn cũng có thể khiến trình kích hoạt gửi một công việc không đồng bộ để thực hiện DDL, như được mô tả trong câu trả lời này và có thêm ví dụ trong câu trả lời này
, nơi bạn sẽ thay đổi khối ẩn danh của công việc để execute immediate
.
Có lẽ sẽ tốt hơn nếu chỉ tạo các liên kết trước vài năm tới trong thời gian bảo trì, hoặc theo lịch trình, hoặc từ một quy trình; thay vì cố gắng kết hợp một thay đổi giản đồ với một thay đổi dữ liệu.