Nếu bạn có quyền kiểm soát lược đồ của mình, tôi sẽ làm cho lược đồ sử dụng cascading deletes.
Từ bài viết (phần thích hợp hơn dịch ví dụ của bạn)
CREATE TABLE point
(
pt_id integer PRIMARY KEY,
evt_id integer REFERENCES event ON DELETE CASCADE
)
Nếu bạn có thác thiết lập, sau đó bạn có thể chỉ cần xóa từ bảng sự kiện chính và tất cả các bảng khác sẽ được dọn dẹp tự động
Nếu không, bạn cần xóa tất cả các tham chiếu trước, sau đó bạn xóa bảng chính. Bạn nên làm điều này trong một giao dịch để giữ cho dữ liệu nhất quán
BEGIN;
DELETE FROM trace WHERE EXISTS
(SELECT 1 FROM point WHERE evt_id = 1139 AND trace.pt_id = point.pt_id);
DELETE FROM point where evt_id = 1139;
DELETE FROM magnitude where evt_id = 1139;
DELETE FROM event where evt_id = 1139;
COMMIT;
Nguồn
2012-04-13 17:11:11
Theo như tôi biết, bạn không thể xóa khỏi nhiều bảng như thế (nhưng tôi có thể sai). Tuy nhiên, tối thiểu 'dấu vết' không có một cột evt_id –
Cơ sở dữ liệu nằm trên máy chủ. Làm cách nào để chạy tệp truy vấn này? – user1202766
Có thats dấu vết đúng không có một cột evt_id nhưng có pt_id đó là từ bảng điểm có evt_id cột .. đó là khó hiểu! – user1202766