1

「合格」、「不合格」、または「NA」をフィールド TEST1、TEST2、TEST3... から TEST15 に挿入する PHP アプリがあります。

TEST1-TEST15 フィールドのいずれかに「Fail」が含まれている場合、「FAIL」で自動的に更新する必要がある OVERALL というフィールドがあります。

update ステートメントと CASE または IF のいずれかを含むトリガーを使用する必要があることは確かですが、正確な構文を突き止めることはできませんでした。

誰でもMySQL初心者を助けてもらえますか? MySQL サーバーのバージョン: 5.1.63-0+squeeze1 (Debian) を使用しています。

4

2 に答える 2

0

OK、ここでもう 1 つの TRIGGER を試してみましょう。テストしたところ、挿入された行の test1 または test2 の値が FAIL の場合、フィールド全体が FAIL に変更されます。挿入する行以外の行の全体フィールドは設定されません。

TRIGGER のコード:

DELIMITER |

CREATE TRIGGER setoverall BEFORE INSERT ON table_name
  FOR EACH ROW BEGIN
    IF NEW.test1 = 'FAIL' OR NEW.test2 = 'FAIL' THEN
        SET NEW.overall = 'FAIL';
    END IF;
  END;
|

必要なのは、正しいテーブル名を入力し、値が FAIL の場合、テーブルにある他の 13 個のテスト列をすべてチェックすることだけです。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-10-23T22:00:06.760 に答える
0

あなたはおそらく次のようなことをすることができます

CREATE TRIGGER triggerName AFTER INSERT ON yourTable
FOR EACH ROW BEGIN
    IF NEW.yourColumn = 'Fail' THEN
        UPDATE otherField set column = 'Fail'
    END IF;
END

これは、そのようなトリガーが理論的にどのように見えるかですが、mysql で作業してからしばらく経っているため、構文について 100% ではないと言わざるを得ません。

トリガーの詳細については、マニュアルを確認してください http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

于 2012-10-19T23:08:30.260 に答える