Tôi tự hỏi liệu có thể thay đổi giá trị ENUM
trên một bảng hay không, để trong tất cả các hàng có giá trị là ENUM
, thay đổi được thực hiện tốt.Thay đổi giá trị của một giá trị ENUM MySQL, trong suốt một bảng
Trả lời
Nếu bạn muốn thay đổi giá trị của một enum:
Giả enum cũ của bạn là:
ENUM('English', 'Spanish', 'Frenchdghgshd', 'Chinese', 'German', 'Japanese')
Để thay đổi việc sử dụng:
-- Add a new enum value
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` ENUM
('English', 'Spanish', 'Frenchdghgshd', 'Chinese', 'German', 'Japanese', 'French');
-- Update the table to change all the values around.
UPDATE tablename SET fieldname = 'French' WHERE fieldname = 'Frenchdghgshd';
-- Remove the wrong enum from the definition
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` ENUM
('English', 'Spanish', 'Chinese', 'German', 'Japanese', 'French');
MySQL có thể sẽ đi qua tất cả các hàng trong bảng của bạn đang cố gắng cập nhật nội dung, tôi đã nghe những câu chuyện về tối ưu hóa được lên kế hoạch xung quanh, nhưng tôi không chắc liệu điều đó có thực sự xảy ra hay không.
Vì vậy, bạn nghĩ rằng MySQL sẽ tự động đi qua cơ sở dữ liệu và thực hiện bất kỳ thay đổi cần thiết? Tôi đã nghĩ một phương pháp khác sẽ sử dụng 'ALTER' để * thêm * giá trị' ENUM' mới vào tập hợp, sau đó sử dụng 'UPDATE' để thay thế bất kỳ phiên bản nào trong bảng giá trị cũ, với giá trị mới. Cuối cùng, sử dụng 'ALTER' để xóa giá trị' ENUM' cũ. Bạn có nghĩ nó sẽ hiệu quả không? – stefmikhail
Một enum không thực sự lưu trữ một chuỗi trong trường nó chỉ sử dụng số nguyên nhỏ nhất sẽ giữ các giá trị trong enum, thường là tinyint. Nếu bạn thay đổi các chuỗi trong một mysql enum thường thời gian không phải làm bất cứ điều gì để hàng – Johan
do đó, nó chỉ liên kết nó thông qua một số nguyên? – stefmikhail
- 1. mysql thay thế giá trị trong một bảng
- 2. Giá trị ban đầu của một Enum
- 3. MySQL chọn dựa trên giá trị ENUM
- 4. Thay đổi một giá trị trong SQLite3
- 5. Gán một @Annotation enum một giá trị
- 6. Hoán đổi giá trị cột trong MySQL
- 7. MySQL: Thêm 30 ngày vào một giá trị trong bảng
- 8. Lặp qua một tập con của một giá trị enum
- 9. Giá trị thiết lập SQL của một cột bằng với giá trị của một cột khác trong cùng một bảng
- 10. Thay đổi giá trị enum khi đang chạy?
- 11. Thay đổi giá trị trong một cột trong sqlite
- 12. MYSQL Chọn hai giá trị một cột
- 13. Cần một bản đồ/bảng Java có nhiều khóa với một giá trị. Giá trị thường được thay đổi
- 14. Thay đổi giá trị của một thuộc tính cụ thể
- 15. Thay đổi số lượng hiện tại của một giá trị tăng tự động trong MySQL?
- 16. SybaseDB, thay đổi giá trị mặc định của cột hiện tại trong một bảng
- 17. thay đổi giá trị của ko.observable
- 18. Đổi tên các cột của một bảng SQL với các giá trị trường của một bảng
- 19. Phân tích một chuỗi thành giá trị Enum trong VB.NET
- 20. CHỌN giá trị min và max từ một phần của một bảng trong MySQL
- 21. Làm cách nào để thay đổi giá trị mặc định của bảng mysql?
- 22. MySQL Chọn: WHERE (giờ bây giờ) = GIỮA giá trị bảng và giá trị bảng
- 23. Lấy tên của giá trị Enum
- 24. Java mảng của enum giá trị
- 25. Giá trị thay đổi SQL
- 26. Chuyển các giá trị enum vào một hàm trong PowerShell
- 27. EnumMap vs Enum giá trị
- 28. Thay đổi giá trị max_heap_table_size?
- 29. Làm thế nào để chọn số lượng giá trị của các loại ENUM trong MySql?
- 30. Sử dụng bảng để cung cấp các giá trị enum trong MySQL?
Sử dụng câu lệnh cập nhật? 'UPDATE table1 SET enum1 = 'male' WHERE enum1 = 'female'' – Johan
@Johan - Và điều đó sẽ không gây ra bất kỳ vấn đề gì? Tôi đoán nó sẽ phải được thực hiện trước khi sử dụng 'ALTER' để thay đổi giá trị' ENUM'. Nhưng nó có được phép không? Tôi tự hỏi vì tôi nghĩ rằng chỉ những giá trị được chỉ định mới được phép chọn trong một cột enum? Và nếu giá trị mới chưa được chỉ định ... – stefmikhail
Thực hiện thay đổi trước và sau đó cập nhật, bạn không thể đặt giá trị enum thành giá trị chưa được đặt trong câu lệnh 'create table' /' alter table'. – Johan