Tôi có bảng có cột chứa một vài giá trị rỗng. Tôi muốn thêm một ràng buộc NOT NULL
trên cột đó mà không cập nhật các giá trị rỗng hiện có thành giá trị không null. Tôi muốn giữ các giá trị null hiện có và kiểm tra các hàng trong tương lai mà chúng chứa một giá trị không null cho cột này. Điều này có thể không? Làm sao?Cách thêm ràng buộc không null vào cột chứa giá trị rỗng
Trả lời
Bạn có thể thêm một ràng buộc không được xác định - nó sẽ không xem xét các hàng hiện có, nhưng nó sẽ được kiểm tra cho bất kỳ hàng mới hoặc hàng cập nhật nào.
ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;
Chỉ cần lưu ý rằng bạn sẽ không thể cập nhật hàng hiện tại trừ khi nó thỏa mãn ràng buộc.
Ngoài ra, hãy nhận thức được nhược điểm mà trình tối ưu hóa sẽ không thể tận dụng hạn chế này trong việc lập kế hoạch của nó - nó phải giả định rằng một số hàng vẫn có thể có giá trị rỗng.
Bạn có thể vui lòng cung cấp một số liên kết bên ngoài để tham khảo thêm không? Cảm ơn! – Rachcha
Cụ thể bạn là ai sau? Tài liệu: http://docs.oracle.com/cd/E11882_01/server.112/e41084/clauses002.htm#i1002273 –
ALTER TABLE table_name SET column_name = '0' WHERE column_name IS NULL;
ALTER TABLE table_name MODIFY COLUMN (column_name NUMBER CONSTRAINT constraint_identifier NOT NULL);
Đây là khóa học giả định rằng cột của bạn là một số nhưng thực sự là điều tương tự, bạn chỉ cần thay đổi '0' thành giá trị mặc định không phải là rỗng.
Hammad: Tôi đối mặt với những vấn đề và giải quyết như sau:
Alter bảng thr_empl_info sửa đổi THR_EM_DESIGNATION_ID không null
- 1. Cột Ràng buộc duy nhất chỉ có thể chứa một giá trị NULL
- 2. PSQLException: ERROR: giá trị null trong cột vi phạm ràng buộc không null
- 3. Thêm cột có giá trị không rỗng theo mặc định.
- 4. Set giá trị null trong WPF ràng buộc
- 5. Truy vấn SQL để thêm giá trị của hai cột có chứa giá trị null?
- 6. Xuân InitBinder: ràng buộc giá trị rỗng hoặc null của một trường phao như 0
- 7. postgres: ràng buộc kiểm tra và các giá trị null
- 8. Ràng buộc DropDownList vào ListItemCollection và Giá trị không được thêm vào DDL
- 9. ActiveRecord :: StatementInvalid: PG :: Lỗi: LRI: giá trị null trong cột "id" vi phạm ràng buộc không null
- 10. Thêm khóa có giá trị rỗng vào Guava Multimap
- 11. Hoặc là các ràng buộc không rỗng trong MySQL
- 12. PHP loại bỏ rỗng, null Mảng/giá trị mảng trong khi vẫn giữ khóa/giá trị không rỗng/null
- 13. SQL- Thêm giá trị vào một cột
- 14. Không thêm cột DateTime vào SQLite mà không có giá trị mặc định?
- 15. Làm cách nào để thêm cột vào bảng trong SQL Server không cho phép giá trị rỗng?
- 16. Chọn giá trị cột nếu không null khác sử dụng giá trị cột khác
- 17. Gán giá trị Null cho cột nguyên trong DataTable
- 18. Cách cập nhật cột với giá trị rỗng
- 19. Thêm cột vào bảng có giá trị mặc định bằng giá trị của cột hiện tại
- 20. Đặt rõ ràng giá trị cột thành null Nhà phát triển SQL
- 21. Tại sao chuyển đổi rõ ràng bắt buộc sau khi kiểm tra giá trị rỗng?
- 22. Entity Framework CTP 4. "Không thể chèn giá trị NULL vào cột" - Mặc dù không có giá trị NULL
- 23. Ruby on Rails: Làm cách nào để thêm một ràng buộc không null vào cột hiện tại bằng cách sử dụng di chuyển?
- 24. Từ ràng buộc vào đối tượng rỗng: RuntimeException: java.lang.reflect.InvocationTargetException
- 25. Tránh cột NULL bằng DEFAULT Chuỗi rỗng
- 26. Xóa hộp văn bản không đặt giá trị ràng buộc thành null
- 27. Ngăn chặn MySQL từ chèn giá trị mặc định ngầm vào không cột rỗng
- 28. Ràng buộc UNIQUE, chỉ khi một trường có chứa giá trị cụ thể
- 29. Cách tốt nhất để thêm cột có giá trị mặc định trong khi đang tải
- 30. Thay đổi giá trị ràng buộc, không ràng buộc chính nó
Có vẻ một chút điên hiện vi phạm hạn chế của riêng bạn. Hoặc là hoặc không được phép là rỗng. Thông thường, loại đó, um, tính linh hoạt được đặt trong ứng dụng sẽ cung cấp cho cơ sở dữ liệu của bạn chứ không phải trong cơ sở dữ liệu. Làm những gì bạn muốn làm, theo cách đó nằm điên rồ. :) – railsdog
Bạn có thể có trình kích hoạt chèn/cập nhật để từ chối bất kỳ giá trị rỗng mới nào. Nhưng nhìn chung, điều này nghe như một ý tưởng tồi. – Thilo
Không điên chút nào. Tôi đã sử dụng điều này nhân dịp trong các hệ thống mà họ muốn giữ dữ liệu cũ (cũ), nhưng bắt đầu kiểm tra một ràng buộc cho bất kỳ dữ liệu mới (hoặc cập nhật). –