[英]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.