Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да добавите ограничение за положително цяло число към колона с цяло число в MySQL?

Ще използвате ключовата дума unsigned за да обозначи, че цялото число не позволява "знак" (т.е. - може да бъде само положително):

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

Можете да прочетете повече за цифровите типове данни (подписани и неподписани) тук .

Що се отнася до действително ограничение за да предотврати вмъкването на отрицателни стойности, MySQL има CHECK клауза, която може да се използва в CREATE TABLE изявление обаче според документацията:

За справка, ето как бихте го използвали (и въпреки че ще се изпълни абсолютно добре, той просто не прави нищо - както се посочва в ръководството):

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

АКТУАЛИЗАЦИЯ (напълно отхвърляне на отрицателни стойности)
От няколко от вашите коментари забелязах, че искате заявките с отрицателни стойности да бъдат напълно отхвърлени и да не се задават на 0 (като нормална транзакция в unsigned колона би свършила работа). Няма ограничение, което да може да направи това като цяло (за което аз поне знам), обаче, ако включите стриктния режим (с STRICT_TRANS_TABLES ) всяка заявка, която вмъква отрицателна стойност в неподписана колона, ще се провали с грешка (заедно с всякакви други грешки при вмъкване на данни, като например невалиден enum стойност).

Можете да го тествате, като изпълните следната команда преди командите за вмъкване:

SET @@SESSION.sql_mode = 'STRICT_TRANS_TABLES';

И ако работи за вас, можете или да актуализирате вашата MySQL конфигурация с sql-mode="STRICT_TRANS_TABLES" или използвайте SET @@GLOBAL.sql_mode = 'STRICT_TRANS_TABLES'; (Не съм сигурен дали SET все пак ще повлияе на глобалната конфигурация на mysql, така че може да е по-добре да актуализирате действителния конфигурационен файл).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте датата във формат MM/DD/YYYY в MySQL дата

  2. Как да създадете MySQL база данни и да зададете привилегии

  3. Изберете mySQL въз основа само на месец и година

  4. Играйте! Framework 1.2.4 --- Настройки на C3P0 за избягване на повреда на комуникационната връзка до време на престой

  5. MySQL NOW() функция с висока точност