2017-10-18 79 views
0

我想创建验证,如果新的。 Some Field =“”(即NOT NULL只是一句INPUT),那么文本messange是“表:人] - Some Field列是无效的”,现在用我这种方法:MySQL的Foreach(触发器)

BEGIN 
IF NEW.`Some Field1` = '' THEN 
    SIGNAL SQLSTATE VALUE '45000' 
    SET MESSAGE_TEXT = '[table:person] - `Some Field` column is not valid'; 
END IF; 
IF NEW.`Some Field1` = '' THEN 
    SIGNAL SQLSTATE VALUE '45000' 
    SET MESSAGE_TEXT = '[table:person] - `Some Field` column is not valid'; 
END IF; 
END; 

这种方法,我们不能如果验证过多,我仍然不了解NEW。 Some Field,是否像在PHP和其他编数组。语言

,如果相同,我们可以使用的方法就像在惠普,我举一个例子:

$new = array('some1'=>'TEST','some2'=>''); 
foreach($new as $field => $val){ 
    if($val == ''){ 
    echo "[table:person] - `{$field}` column is not valid"; 
    //and final we can use continue or return false 
    } 
} 
//And that result is "[table:person] - `some2` column is not valid" 

回答

1

https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html - 在触发器主体,OLD和NEW关键字,使您能够访问在列受触发器影响的行。 OLD和NEW是触发器的MySQL扩展;他们不区分大小写。 在INSERT触发器中,只能使用NEW.col_name;没有旧的行。在DELETE触发器中,只能使用OLD.col_name;没有新的行。在UPDATE触发器中,可以使用OLD.col_name在更新之前引用行的列,并使用NEW.col_name引用行更新后的列。 一个以OLD命名的列是只读的

+0

感谢您的回应,以及...现在如何获得简单的语法? –

+0

我不能写很多查询 –