gpt4 book ai didi

mysql - 如何在 MySQL 中的两列中触发正则表达式条件?

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

我的 MySQL 表中有两列(属性),将通过触发器将唯一的 RegEx 条件应用于其中的任意一列。这意味着column1或column2的条件足以让触发器返回0。

换句话说,我如何在这些列之间放置 OR?

我想出了这个解决方案,但我不确定是否有更好的解决方案:

CREATE DEFINER = CURRENT_USER TRIGGER `MyDatabase`.`TableName_BEFORE_INSERT`
BEFORE INSERT ON `TableName` FOR EACH ROW
BEGIN
IF (NEW.column1,column2 REGEXP '^[augc]+' ) = 0 THEN
ROLLBACK;
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT = 'Your Input can contain only the following letters 'AUGC'. Please correct your input format;
END IF;
END
DELIMITER;

最佳答案

您的解决方案存在一些问题,它甚至无法编译,因为:

  • 触发器中不允许使用 COMMIT 和 ROLLBACK
  • 此语法错误:NEW.column1,column2 REGEXP ...
  • 此位置有语法错误...字母“AUGC”。请...,您需要使用双撇号...字母“AUGC”。请...
<小时/>

试试这个触发器:

CREATE TRIGGER `TableName_BEFORE_INSERT`
BEFORE INSERT ON `TableName` FOR EACH ROW
BEGIN
IF NEW.column1 REGEXP '^[augc]+' OR NEW.column2 REGEXP '^[augc]+' THEN
-- ROLLBACK;
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT = 'Your Input can contain only the following letters ''AUGC''. Please correct your input format';
END IF;
END
/

演示:http://sqlfiddle.com/#!9/27f5a

关于mysql - 如何在 MySQL 中的两列中触发正则表达式条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30373057/

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