2017-03-16 23 views
0

考える表Iに挿入された値をチェックする必要はINSERTトリガする前に、複数の挿入

CREATE TABLE testtab(
col int 
) 

で特定の行を無視して、値が条件を満たしている場合、これらの行を無視します。

トリガーがすべての行を無視しますが、私はちょうど「55」無視必要があります。

DELIMITER $$ 
CREATE TRIGGER check_rows BEFORE INSERT ON testtab 
    FOR EACH ROW 
    BEGIN 
     IF new.col > 7 THEN 
      -- here need ignore that row and do not insert 
     END IF; 
    END; $$ 

私はsignal sqlstate '45000'を使用することができますが、問題は、私は複数の挿入構文を使用する場合ということです。だから、トリガーは次のようになります、 "4"を挿入します。

複数の/一括挿入を使用すると、特定の行を無視する方法と、すべてを削除する方法はありますか?

+0

1. [これを参照](https://msdn.microsoft.com/en-gb/library/ms178129.aspx) 2. [こちらも参照](https://msdn.microsoft.com/en) -gb/library/ms179250.aspx) – ARr0w

+0

私はこれがトリガーで本当に可能だとは思わない、つまり、ある項目を無視し、シグナルでエラーを発生させない限り別の項目を挿入する。入力値をチェックしてアプリケーションレベルのコーディングの操作を実行し、次に挿入クエリを生成すると、これははるかに簡単になります。 –

答えて

0

PHPを使用している場合は、その中のデータをクリーンアップしてから、そのバルクをMySQLに挿入してください。それ以外の場合、トリガーを使用すると、すべてまたは何も挿入することができません。

関連する問題