Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dodać dodatnie ograniczenie liczby całkowitej do kolumny liczb całkowitych w MySQL?

Użyjesz słowa kluczowego unsigned aby oznaczyć, że liczba całkowita nie zezwala na "znak" (tj. - może być tylko dodatni):

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

Możesz przeczytać więcej o numerycznych typach danych (ze znakiem i bez znaku) tutaj .

O ile rzeczywiste ograniczenie aby zapobiec wstawianiu wartości ujemnych, MySQL ma CHECK klauzula, która może być użyta w CREATE TABLE oświadczenie jednak zgodnie z dokumentacją:

Dla porównania, oto jak go użyć (i chociaż będzie działać absolutnie dobrze, po prostu nic nie robi - jak mówi instrukcja):

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

AKTUALIZUJ (całkowite odrzucenie wartości ujemnych)
Na podstawie kilku Twoich komentarzy zauważyłem, że chcesz, aby zapytania z wartościami ujemnymi były całkowicie odrzucane i nie były ustawione na 0 (jako normalna transakcja do unsigned kolumna zrobiłaby). Ogólnie rzecz biorąc, nie ma ograniczenia, które mogłoby to zrobić (przynajmniej o tym wiem), jeśli włączysz tryb ścisły (z STRICT_TRANS_TABLES ) każde zapytanie, które wstawia wartość ujemną do kolumny bez znaku, zakończy się błędem (wraz z innymi błędami wstawiania danych, takimi jak nieprawidłowe enum wartość).

Możesz to przetestować, uruchamiając następujące polecenie przed poleceniami wstawiania:

SET @@SESSION.sql_mode = 'STRICT_TRANS_TABLES';

A jeśli to działa, możesz zaktualizować konfigurację MySQL za pomocą sql-mode="STRICT_TRANS_TABLES" lub użyj SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES'; (Nie jestem pewien, czy SET polecenie wpłynie jednak na globalną konfigurację mysql, więc może być lepiej zaktualizować rzeczywisty plik konfiguracyjny).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy porównywanie ciągów znaków w MySQL jest podatne na ataki czasowe?

  2. Przesyłanie i przechowywanie wielu plików graficznych PHP w folderze i bazie danych

  3. Logowanie-Uwierzytelnianie do zdalnej bazy danych mysql

  4. Nie możesz uruchomić MySQL w XAMPP?

  5. Jak stworzyć bloga w PHP i bazie danych MySQL - Backend