Đơn giản hơn:
BEGIN;
DROP TABLE a;
ALTER TABLE a1 RENAME TO a;
COMMIT;
DROP TABLE
có được ACCESS EXCLUSIVE
khóa trên bàn nào. LOCK
rõ ràng lệnh không tốt hơn. Và việc đổi tên một anh chàng đã chết chỉ là một sự lãng phí thời gian.
Bạn có thể muốn khóa bảng cũ trong khi chuẩn bị mới, để ngăn chặn việc ghi ở giữa. Sau đó, bạn sẽ phát hành một khóa như thế này sớm hơn trong quá trình:
LOCK TABLE a IN SHARE MODE;
Điều gì xảy ra với các giao dịch đồng thời cố gắng truy cập vào bảng? Nó không đơn giản như vậy, hãy đọc cái này:
Giải thích lý do tại sao bạn có thể thấy các thông báo lỗi như thế này: