Я до сих пор не могу понять, почему это так. Ниже мой синтаксис 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 символами. Так я могу знать, почему это? и как я могу избежать этой проблемы?
Вы не можете установить ограничение на 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 ;
Вы можете использовать где условие при вставке данных, как
Insert into tablename (column name) values (values) where len(columnname) <= 10
Даже если вы получили ответ, вы можете получить некоторую идею