Chức năng REPLACE INTO
trong MySQL hoạt động theo cách xóa và chèn hàng. Trong bảng của tôi, khóa chính (id
) được tự động tăng lên, vì vậy tôi đã mong đợi nó xóa và sau đó chèn một bảng với id
ở đuôi của cơ sở dữ liệu.REPLACE INTO, nó có sử dụng lại PRIMARY KEY không?
Tuy nhiên, nó không mong muốn và chèn nó với cùng một id
! Đây có phải là hành vi mong đợi hay tôi đang thiếu thứ gì đó ở đây? (Tôi không đặt số id
khi gọi số REPLACE INTO
)
Không thể tái tạo: 'TẠO BẢNG TABLE (id INT PRIMARY KEY AUTO_INCREMENT, tên VARCHAR (20) NOT NULL UNIQUE, giá trị VARCHAR (200) NOT NULL); REPLACE INTO kiểm tra (tên, giá trị) GIÁ TRỊ ('foo', 'bar'); REPLACE INTO kiểm tra (tên, giá trị) GIÁ TRỊ ('foo', 'baz'); SELECT id FROM test, 'trả về 2, không 1 - dường như' id' đã được tăng lên hai lần. (chỉnh sửa: thử nghiệm với cả InnoDB và MyISAM) – lanzz
Bạn đang sử dụng công cụ lưu trữ nào trên bảng này? –
Hành vi bạn đang quan sát không nhất quán với hành vi mong đợi. Một giải thích có thể là thao tác DELETE không thành công, có thể do vi phạm ràng buộc khoá ngoại. Đó là điều duy nhất tôi có thể nghĩ đến. Không thể làm nhiều hơn nữa để giúp đỡ mà không có một trường hợp thử nghiệm đáng kể hơn mà chứng minh các hành vi quan sát. – spencer7593