0

トリガーを使用するのは初めてで、レコードが別のテーブルに挿入されたときに、あるテーブルのフィールドを更新するトリガーを作成する方法を理解するのに苦労しています。

詳しく説明すると、servTickets と servTicketNotes の 2 つのテーブルがあります。

servTickets には、顧客、連絡先、電話、電子メール、問題の説明、ステータスなどのテキスト フィールドがいくつかあります。このテーブルの PK は と呼ばれる INT フィールドcallIDです。

servTicketNotes には 2 つのフィールドしかありません。ここでも、PK は INT フィールド「callID」でありimage、サービス レポートの画像を格納する BLOB フィールドが呼び出されます。

私が苦労しているのは、新しいレコードがservTicketNotesに挿入されたときの status値でservTicketsのフィールドをトリガーで更新することです。Closed

これが INSERT AFTER なのか、BEFORE なのか、両方なのか混乱していますが、基本的にレポートが送信された場合 (それによって servTicketNotes にレコードが作成され、トリガーが servTickets テーブルで同じ callID を持つレコードを検索し、 status の値を「Closed」に変更します。

これはとても単純なように思えますが、開始方法を把握できないようです...

ご協力/ご指導をよろしくお願いいたします。

4

2 に答える 2

0

それはおそらくPOSTトリガーですか?これは次のことを意味します:

着信レコードをコミットした後、さらにアクションを実行する必要があります。つまり、他のテーブルに挿入します。

PREコミットを実行すると、Notesでエラーが発生することを心配し、ステータスが誤って更新される可能性があります。

于 2012-06-13T15:53:26.550 に答える
0

これは、AFTER INSERT トリガーを使用して行うことができます。次のようなことを試してください:

DELIMITER $$

DROP TRIGGER IF EXISTS tr_a_ins_servTicketNotes $$

CREATE TRIGGER pabeta.tr_a_ins_servTicketNotes AFTER INSERT ON servTicketNotes FOR EACH ROW BEGIN
  update servTickets
  set status = 'Closed'
  where callID = NEW.callID;

END $$

DELIMITER ;
于 2012-06-13T18:48:30.583 に答える