MySQL - Constraint Проверка, если длина поля столбца ниже определенного числа не работает [duplicate]

Вместо input.nextLine() используйте input.next(), что должно решить проблему.

Измененный код:

public static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
    System.out.print("Insert a number: ");
    int number = input.nextInt();
    System.out.print("Text1: ");
    String text1 = input.next();
    System.out.print("Text2: ");
    String text2 = input.next();
}
2
задан terrible programming 4 June 2015 в 05:47
поделиться

2 ответа

К сожалению, MySQL не поддерживает ограничения проверки SQL. Поэтому попробуйте использовать enum вместо

CREATE TABLE IF NOT EXISTS supervisor (
sup_id INT(3) NOT NULL,
sup_name VARCHAR(30) NOT NULL,
gen enum('M','F') NOT NULL,
dep_id INT(4),

PRIMARY KEY (sup_id),
INDEX (dep_id),

FOREIGN KEY (dep_id)
    REFERENCES department(dep_id)
    ON UPDATE CASCADE ON DELETE RESTRICT    
);
0
ответ дан Manashvi Birla 27 August 2018 в 21:23
поделиться

MySQL не устанавливает контрольные ограничения.

Это хорошо документированное отклонение от стандарта SQL. (Хотя это неожиданно для непосвященных.)

Если вам нужна база данных MySQL для обеспечения «контрольного ограничения», принудительное исполнение должно быть закодировано в триггер BEFORE INSERT и BEFORE UPDATE.


Эта заметка:

Предложение CHECK разобрано, но игнорируется всеми механизмами хранения.

похоронен в Справочное руководство по MySQL в синтаксисе CREATE TABLE.

Ссылка: https://dev.mysql.com/doc/refman/5.5/en/create-table.html


ПРЕДУПРЕЖДЕНИЕ О ENUM

ENUM не ограничивает «недействительные» значения от вставки; недопустимое значение переводится в строку нулевой длины, выдается предупреждение, но это не ошибка.

Демонстрация:

CREATE TABLE foo (gen ENUM('M','F'))

INSERT INTO foo (gen) VALUES ('x')

-- Warning Code : 1265
-- Data truncated for column 'gen' at row 1

SELECT gen, CHAR_LENGTH(gen) FROM foo;

-- gen  CHAR_LENGTH(gen)  
-- ---  ----------------
--                     0
3
ответ дан spencer7593 27 August 2018 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: