繁体   English   中英

创建折扣触发器

[英]Create a trigger for discount

我想创建一个触发器,它将根据从表观众到表票的折扣更新表票中的价格。 但是我在插入时遇到错误

桌票:

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 

您不是在更新 Ticket 表,而是在更新 Audience 表。 尝试 :

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

当您使用触发器时,请阅读一些关于 :new 和 :old 的信息。 此外,如果您更新观众表,这不会更新票证表。 你可以说“插入或更新后......”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM