2017-10-18 80 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

我不能寫很多查詢 –