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

Làm cách nào để thêm ràng buộc số nguyên dương vào cột số nguyên trong MySQL?

Bạn sẽ sử dụng từ khóa unsigned để biểu thị rằng số nguyên không cho phép "dấu" (tức là - nó chỉ có thể là số dương):

CREATE TABLE test (
    test_column int(11) unsigned
);

Bạn có thể đọc thêm về các kiểu dữ liệu số (có dấu &không dấu) tại đây .

Theo như một ràng buộc thực tế để ngăn chặn việc chèn các giá trị âm, MySQL có CHECK mệnh đề có thể được sử dụng trong CREATE TABLE tuy nhiên, tuyên bố theo tài liệu:

Để tham khảo, đây là cách bạn sẽ sử dụng nó (và mặc dù nó sẽ hoạt động hoàn toàn tốt, nhưng nó không có tác dụng gì - như hướng dẫn sử dụng đã nêu):

CREATE TABLE test (
    test_column int(11) unsigned CHECK (test_column > 0)
);

CẬP NHẬT (từ chối hoàn toàn các giá trị âm)
Tôi nhận thấy từ một số nhận xét của bạn rằng bạn muốn các truy vấn có giá trị âm bị từ chối hoàn toàn và không được đặt thành 0 (như một giao dịch bình thường thành unsigned cột sẽ làm gì). Tuy nhiên, không có ràng buộc nào có thể làm điều này nói chung (ít nhất là tôi biết), nếu bạn bật chế độ nghiêm ngặt (với STRICT_TRANS_TABLES ) bất kỳ truy vấn nào chèn giá trị âm vào một cột chưa được đánh dấu sẽ không thành công với lỗi (cùng với bất kỳ lỗi chèn dữ liệu nào khác, chẳng hạn như enum không hợp lệ giá trị).

Bạn có thể kiểm tra nó bằng cách chạy lệnh sau trước các lệnh chèn của bạn:

SET @@SESSION.sql_mode = 'STRICT_TRANS_TABLES';

Và nếu nó phù hợp với bạn, bạn có thể cập nhật cấu hình MySQL của mình bằng sql-mode="STRICT_TRANS_TABLES" hoặc sử dụng SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES'; (Tôi không chắc liệu SET lệnh sẽ ảnh hưởng đến cấu hình mysql chung, vì vậy có thể tốt hơn nếu cập nhật tệp cấu hình thực).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kiểm tra xem nút loại nhập liệu có được nhấn trong PHP hay không?

  2. PHP sử dụng CURRENT_TIMESTAMP từ múi giờ miền đông

  3. kiểm tra xem kết quả truy vấn có hàng trống mysqli không

  4. Sắp xếp tự nhiên trong MySQL

  5. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Gentoo