Nếu tôi đổi tên Bảng/Cột SQLite/Hàng sau khi các chỉ mục được tạo, các chỉ mục cũ vẫn hoạt động?Đổi tên Bảng/Cột SQLite/Hàng sau khi chỉ mục đã được tạo
Cảm ơn!
Nếu tôi đổi tên Bảng/Cột SQLite/Hàng sau khi các chỉ mục được tạo, các chỉ mục cũ vẫn hoạt động?Đổi tên Bảng/Cột SQLite/Hàng sau khi chỉ mục đã được tạo
Cảm ơn!
Nếu bạn đang sử dụng ALTER TABLE
với RENAME TO
để đổi tên một bảng, sau đó như mô tả trên this page (từ các tài liệu SQLite) các chỉ số sẽ vẫn làm việc:
Câu lệnh ALTER TABLE lệnh trong SQLite cho phép người dùng đổi tên một bảng [...] Nếu bảng đang được đổi tên có trình kích hoạt hoặc chỉ mục, thì các bảng này vẫn được gắn vào bảng sau khi nó được đổi tên.
Nhưng lưu ý rằng không đổi tên cột được phép. Đây là một trong số SQL features not implemented by sqlite:
Chỉ các biến thể RENAME TABLE và ADD COLUMN của lệnh ALTER TABLE mới được hỗ trợ. Các loại hoạt động ALTER TABLE khác như DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT, v.v. được bỏ qua.
Hàng không có tên (ngoại trừ ý nghĩa có PK) nên không thực sự có cách đổi tên chúng.
Tôi đặc biệt khuyên bạn nên sử dụng di chuyển Rails ActiveRecord để duy trì cơ sở dữ liệu của bạn. Điều này có thể được thực hiện bên ngoài Rails. Vì vậy, bạn ứng dụng không cần phải là một ứng dụng Rails sử dụng nhiệm vụ cào
Xem ở đây cho một blog tuyệt vời về cách để làm điều này http://exposinggotchas.blogspot.com/2011/02/activerecord-migrations-without-rails.html
Vâng, các chỉ số cũ sẽ vẫn được chức năng.
Xin lưu ý rằng sqlite đó không quan tâm đến tên của các chỉ mục. Ban đầu khi một chỉ mục được tạo thường thì chúng được đặt tên theo bảng và trường, vì vậy khi bạn đổi tên bảng, các chỉ mục sẽ vẫn có tên của bảng cũ trong bảng đó. Điều này có thể gây ra vấn đề, khi bạn ví dụ:
đổi tên bảng cũ:
sqlite3 "$DB" "PRAGMA busy_timeout=20000; ALTER TABLE '$TABLE' RENAME TO '$TABLE"_backup"'"
Điều này sẽ gây ra một lỗi , các chỉ mục đã tồn tại.
Giải pháp: Đổi tên các chỉ mục quá, hoặc xóa chúng trong bảng đã đổi tên trước khi bạn nhập lại bản gốc (xem this answer).
Có cách nào để sao chép thông tin từ cột này sang cột khác, sau đó xóa cột đầu tiên không? – joshim5
Xem [câu hỏi SO khác] (http://stackoverflow.com/questions/805363/how-do-i-rename-a-column-in-a-sqlite-database-table) về cách đổi tên cột –
Tôi đã thực sự chỉ cần nhìn qua đó :). Câu trả lời đầu tiên có vẻ tuyệt vời, nhưng làm thế nào tôi nên đối phó với các chỉ số? – joshim5