0

これは簡単な質問です。単純な場合は申し訳ありませんが、構文がよくわからないため、良い例を見つけることができませんでした。

誰かがサービスと呼ばれるテーブルに飛行機を挿入すると、1 つのテーブル「飛行機」のステータス属性を更新する必要があります。ステータスも設定されます。「非アクティブ」と言うと、他のテーブルに対応する必要があります。これは簡単なはずですが、しばらく苦労しています。

前もって感謝します。

飛行機のテーブルはこちら

Create Table Airplane(
    Name    Char(25)    NOT NULL,
    aID     Int NOT NULL Primary Key,
    aCount  Int,
    status  Char(8) NOT NULL DEFAULT 'Active',
    cost    double Default 0.0
);

これがサービス テーブルです。これらは変更される可能性があります。すべての集中的な目的のために、このトリガーに焦点を当てています。

Create table Servicing( 
 TicketNumber Int  NOT NULL AUTO_INCREMENT Primary Key,
 Mechanic  Char(50) NOT NULL,
 Problem   Char(25) NOT NULL,
 Airplane  Char(25) NOT NULL,
 TimeComplete CHAR(25) NOT NULL,
 Servicing  Char(25) NOT NULL,
 Status   Char(25) NOT NULL DEFAULT 'Inactive');

これがトリガーですが、問題が発生しているようです。

DELIMITER $$
CREATE TRIGGER Airplane_status_update 
AFTER INSERT ON Servicing
FOR EACH ROW
BEGIN
UPDATE Airplane status 
   SET status = new.status
 WHERE name = new.airplane;
END $$
DELIMITER ;
4

1 に答える 1

1

あなたはおそらくこのようなものを探しています

DELIMITER $$
CREATE TRIGGER airplane_status_update 
AFTER INSERT ON servicing
FOR EACH ROW
BEGIN
UPDATE airplane 
   SET status = NEW.status
 WHERE airplane_id = NEW.airplane_id;
END $$
DELIMITER ;

サービスと飛行機のテーブルの DDL を投稿していないため、正しいフィールド名を指定する UPDATE ステートメントを微調整する必要があることは明らかです。

于 2013-05-01T04:12:22.523 に答える