我仍然无法弄清楚为什么会这样。下面是我的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
)时,它会被接受。
如果值小于10或大于10,我希望表拒绝cupon_code
字段的值。它总是必须用10个字符固定。所以我能知道这是为什么吗?我该如何避免这个问题?
您无法使用mysql在MIN
上设置约束,而CHAR(x)
仅强制使用最大长度。
使用MySQL VARCHAR like Data type with MIN and MAX character lengths,您可以进行以下触发:
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 ;
您可以在插入数据时使用where条件
Insert into tablename (column name) values (values) where len(columnname) <= 10
即使你得到答案,你也可以得到一些想法