用于验证Mysql表中URL列值的触发器

用于验证Mysql表中URL列值的触发器,mysql,triggers,Mysql,Triggers,我在PhpMyadmin中有一个表,其中有一列接受url值。我不想从PHP代码/前端进行验证。我如何使用触发器/程序实现此目标?我尝试执行以下触发器,但出现错误:“1241个操作数应包含3列” 好的,我自己得到了答案 CREATE TRIGGER `validate_work_url` BEFORE INSERT ON `table_name` FOR EACH ROW BEGIN IF new.url REGEXP "^

我在PhpMyadmin中有一个表,其中有一列接受url值。我不想从PHP代码/前端进行验证。我如何使用触发器/程序实现此目标?我尝试执行以下触发器,但出现错误:“1241个操作数应包含3列”


好的,我自己得到了答案

            CREATE TRIGGER `validate_work_url` BEFORE INSERT ON `table_name`
             FOR EACH ROW BEGIN
            IF new.url REGEXP "^(https?://|www.)[.A-Za-z0-9-]+.[a-zA-Z]{2,4}" THEN
                SET new.url = new.url;
            ELSE
            SIGNAL SQLSTATE '45000'
                                SET MESSAGE_TEXT =  "INCORRECT URL" ;
            END IF;
            END

你以前试过什么,但对你不起作用?为什么不想用PHP(它是服务器端,而不是前端)进行验证?如果您真的需要(出于一些奇怪的需求)在MySQL中进行验证,请查看MySQL正则表达式()和触发器(),并将它们结合使用。注意:我添加了这个作为一个评论,因为我不认为它实际上提供了一个完整的答案。附议gabe3886的评论。验证属于中级PHP代码。应该尽可能避免数据库层中的数据验证(引用完整性之外)。我不想做前端验证。i、 e,同时从用户处获取输入。甚至不想在PHP代码插入数据库时进行验证。我希望它只在mysql/后端得到验证。现在,您已经不再困惑了。数据库用于处理和操作数据,而不是验证。你们用枪杀苍蝇吗?:D我只想在表中输入一些记录,而不需要任何代码的帮助……所以我试图从phpmyadmin在表中插入记录。谁能告诉我如何添加条件?(我不是指检查约束)我正在学习触发器、程序
            CREATE TRIGGER `validate_work_url` BEFORE INSERT ON `table_name`
             FOR EACH ROW BEGIN
            IF new.url REGEXP "^(https?://|www.)[.A-Za-z0-9-]+.[a-zA-Z]{2,4}" THEN
                SET new.url = new.url;
            ELSE
            SIGNAL SQLSTATE '45000'
                                SET MESSAGE_TEXT =  "INCORRECT URL" ;
            END IF;
            END