2017-02-06 6 views
-1

テーブルの聴衆からテーブルのチケットへの割引に応じてテーブルのチケットの価格を更新するトリガーを作成したいと思います。割引のためのトリガーを作成する

表チケットの中に挿入するときしかし、私はエラーを持つamdの:

create table Ticket(
Ticket_ID integer not null, 
Class_Name varchar(50), 
Payment_Method varchar(60), 
Audience_ID integer, 
Seating_Number varchar(20), 
Price integer, 

primary key(Ticket_ID), 
foreign key(Class_Name) references Class) 
foreign key(Audience_ID) references Audience, 
foreign key(Seating_Number) references Seating); 

表の読者

CREATE TABLE AUDIENCE 
(Audience_ID integer not null, 
Audience_Age integer, 
Audience_Type varchar (50), 
Discount Decimal(7,2), 
Primary key (Audience_ID) 
); 



CREATE Trigger Audience_Type 
    AFTER INSERT ON AUDIENCE 
    FOR EACH ROW MODE DB2SQL 
     UPDATE AUDIENCE 
     SET Audience_Type = (SELECT Price FROM TICKET) && 
     (Price-(Price*Discount)) 
     WHERE AUDIENCE.Discount = TICKET.Price 
+0

どのようなエラーがありますか?エラーは表示されません。 – mustaccio

答えて

0

あなたはオーディエンステーブルを更新している、チケットテーブルを更新されていません。 試してください:あなたはトリガーを操作するとき、古い:新しいと:

CREATE Trigger T_name 
AFTER INSERT ON AUDIENCE 
FOR EACH ROW MODE DB2SQL 
    UPDATE Ticket -- here you should update Ticket table 
    SET price = Price-(Price*:new.Discount) 
    WHERE ticket.AUDIENCE_id= AUDIENCE.AUDIENCE_id 

は、について少し読みます。また、オーディエンステーブルを更新するとチケットテーブルが更新されません。 「挿入または更新後...」と言うことができます

+0

AUDIENCE.DISCOUNT "は使用されているコンテキストでは無効です - このエラーが発生しました –

+0

価格を100(... SET price = 100 ...)に更新しようとしましたが、今すぐに行く – Dax

+0

AUDIENCE.AUDIENCE_idからAUDIENCEを削除した後に作業していますが、間違った値が表示されています(すべての値が計算されます)。 –

関連する問題