Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thực hiện tăng tự động điền vào số đã xóa trước đó

Khi đó, bạn không muốn sử dụng cột tăng tự động. Nếu bạn muốn lấp đầy khoảng trống, hãy đặt nó thành cột int và xử lý logic trong proc hoặc insert được lưu trữ.

CHỈNH SỬA:

Vì đó là một cột int, bạn có thể sắp xếp chúng bằng số. Chỉ cần thực hiện SELECT Ids FROM Table Order By Ids để lấy tất cả các Id và kiểm tra các lỗ hổng trong tập dữ liệu được trả về.

Có thể có một cách trơn tru hơn để thực hiện việc này, nhưng bạn có thể lặp lại các kết quả bằng con trỏ và so sánh với một INT biến tăng trong suốt vòng lặp. Khi bạn tìm thấy một khoảng trống (không khớp) - hãy ngắt vòng lặp và sử dụng INT đó giá trị như INSERT của bạn Tôi.

Tôi sẽ không viết mã cho bạn, nhưng đó là một số bước giúp bạn đi đúng hướng. Nó phải là một chút cơ bản của lập trình mà bạn có thể xử lý.

Hy vọng điều này sẽ hữu ích.

CHỈNH SỬA # 2:

Như những người khác đã lưu ý, động thái tốt nhất của bạn là chỉ cần để lại những khoảng trống. Trừ khi có một số giới hạn trên bàn theo chiều dài và id PHẢI là 1-30 (kỳ lạ), hãy để nó một mình. Không có lợi ích gì khi lấp đầy khoảng trống.

CHỈNH SỬA # 3:

Một điều nữa cần xem xét:nếu bạn thực sự phải giữ 1-30 vì lý do nào đó, đừng xóa các hàng của bạn. Thêm một cột để gắn cờ từng hàng là hoạt động hay không, sau đó chỉ cần cập nhật các hàng không hoạt động khi bạn cần và sau đó gắn cờ chúng là hoạt động. Đây là RẤT hacky, nhưng yêu cầu của bạn hơi khó, vì vậy ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hàm đệ quy để lấy tất cả các danh mục con

  2. MySQL - CHỌN tên đứng đầu tiên theo thứ tự bảng chữ cái

  3. Làm cách nào để lưu một chuỗi văn bản có ngắt dòng vào trường văn bản của cơ sở dữ liệu MySQL bằng PHP?

  4. Cách chèn DECIMAL vào cơ sở dữ liệu MySQL

  5. Entity Framework Code First MaxLength và FixedLegth (char vs varchar)