gpt4 book ai didi

mysql - 为有限数量的选项验证字符串输入的最佳方法

转载 作者:行者123 更新时间:2023-11-29 06:03:48 24 4
gpt4 key购买 nike

我正在尝试验证 MySQL 中的输入,并希望将属性的字符串值输入限制为属于集合 {'type1', 'type2', 'type3', 'type4', '输入 5'}。我已经选择使用 ENUM{'type1', 'type2', 'type3', 'type4', 'type5'} 数据类型。虽然这似乎可以防止插入无效数据,但它没有向用户提供足够描述性的错误消息来合理地更正输入。错误信息是:

Data truncated for column 'type' at row 1

这并不表示我正在寻找枚举值之一。我正在考虑添加的是一个 BEFORE INSERT 触发器,它检查字符串是否有效,如果无效则检查字段和错误。但是,我对 SQL 语法很不熟悉,而且我的实现看起来很笨拙:

IF (NEW.type <> 'Type1' OR
NEW.type <> 'Type2' OR
NEW.type <> 'Type3' OR
NEW.type <> 'Type4' OR
NEW.type <> 'Type5')
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = "Please ensure 'type' is one of the following: Type1, Type2, Type3, Type4, or Type5";
END IF;

是否有更好的方法来实现我正在寻找的东西(即,如果输入属于“ListOfTypes”而不是使用那么多 OR),因为如果有效类型数量较多,这会变得非常笨重。这种双重验证是否必要或谨慎?我认识到这会阻止我使用索引作为输入,这是 ENUM 数据类型的一个好处。如果这个问题有明显的答案,我深表歉意。谢谢!

最佳答案

好吧,如果你不想使用 ENUM,那么使用 NOT IN (...) 语法怎么样:

IF (NEW.type <b>NOT IN</b> ('Type1','Type2','Type3','Type4','Type5'))
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = "Please ensure 'type' is one of the following: Type1, Type2, Type3, Type4, or Type5";
END IF;

关于mysql - 为有限数量的选项验证字符串输入的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com