2016-07-06 11 views
0

テーブルに挿入した後、Aluguelの更新フィールドのステータスがビジー状態になりました。トリガーを作成するMysql

新しいキーワード

DELIMITER $$ CREATE TRIGGER Tgr_Status_Update AFTER UPDATE 

ON aluguel FOR EACH ROW 

BEGIN UPDATE apartamento SET status_apart = new.busy 

WHERE id_apart = new.apartamento_id_apart; 

END$$ DELIMITER ; 

を使用する必要が

DELIMITER $$ 
CREATE TRIGGER Tgr_Status_Update AFTER INSERT 
ON aluguel 
FOR EACH ROW 
    BEGIN 
     UPDATE apartamento SET status_apart = busy 
     WHERE id_apart = apartamento_id_apart; 
    END$$ 
DELIMITER ; 
+0

多分それはWHERE id_apart = NEW.apartamento_id_apart' 'すべきですか? – Barmar

答えて

0

----------------------------- ----------挿入トリガー-----------------

DELIMITER $$ CREATE TRIGGER Tgr_Status_Insert AFTER INSERT 

ON aluguel FOR EACH ROW 

BEGIN UPDATE apartamento SET status_apart = new.busy 

WHERE id_apart = new.apartamento_id_apart; 

END$$ DELIMITER ; 
+0

私は理解していません –

+0

彼はそれが挿入後に行われることを望んでいるということです。 – Barmar

+0

@RamonChavesはあなたのSQLでタイプミスしたものの代わりに私の答えを試します –

0

挿入する表の列を参照するには、 NEW.column_nameを使用する必要があります。

busyが文字列の場合は、引用符で囲む必要があります。

DELIMITER $$ 
CREATE TRIGGER Tgr_Status_Update AFTER INSERT 
ON aluguel 
FOR EACH ROW 
    BEGIN 
     UPDATE apartamento SET status_apart = 'busy' 
     WHERE id_apart = NEW.apartamento_id_apart; 
    END$$ 
DELIMITER ; 

DEMO

+0

status_apartフィールドを 'busy'に更新できません –

+0

引用符で囲む必要があります。 – Barmar

+0

インサートを作った後。彼はApartamento_id_apartのAluguelテーブルとApartamentoテーブルのid_partを比較します。ただ働かないでください。 –

関連する問題