MySQL char принимает значения, которые не являются фиксированными

Я до сих пор не могу понять, почему это так. Ниже мой синтаксис SQL ..

create table usertbl{
id int auto_increment,
name varchar(30) not null,
cupon_code char(10) not null,
primary key(id)
}

Итак, согласно этой таблице, cupon_code поле имеет фиксированную длину, но когда я вставляю данные в это поле без фиксированного значения, например we3434, это будет принято.

Я хочу, чтобы таблица отклоняла значения для cupon_code поле, если значение меньше 10 или больше 10. Оно всегда должно быть зафиксировано 10 символами. Так я могу знать, почему это? и как я могу избежать этой проблемы?

1

Решение

Вы не можете установить ограничение на MIN с MySQL и тому CHAR(x) только сила максимальная длина.

С помощью MySQL VARCHAR как тип данных с длиной символов MIN и MAX Вы можете сделать следующий триггер:

DELIMITER $$

CREATE TRIGGER `tgi_usertbl_cupon_code_length` BEFORE INSERT ON `usertbl`
FOR EACH ROW
BEGIN

IF LENGTH(NEW.cupon_code) <> 10
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'ERROR - Invalid length of cupon_code';
END IF;

END $$
DELIMITER ;
1

Другие решения

Вы можете использовать где условие при вставке данных, как

Insert into tablename (column name) values (values) where len(columnname) <= 10

Даже если вы получили ответ, вы можете получить некоторую идею

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector