2015-03-25 3 views
0
+----------------+-------------+------+-----+---------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+----------------+-------------+------+-----+---------+-------+ 
| attractionID | varchar(30) | NO | PRI | NULL |  | 
| attractionName | char(30) | YES |  | NULL |  | 
| description | char(100) | YES |  | NULL |  | 
| ticketprice | int(11)  | NO |  | NULL |  | 
+----------------+-------------+------+-----+---------+-------+ 

+--------------+-------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+--------------+-------------+------+-----+---------+-------+ 
| packageNo | varchar(30) | NO | PRI | NULL |  | 
| attractionID | varchar(30) | NO | PRI | NULL |  | 
| numTickets | int(11)  | NO |  | NULL |  | 
+--------------+-------------+------+-----+---------+-------+ 

+---------------+-------------+------+-----+------------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+---------------+-------------+------+-----+------------+-------+ 
| packageNo  | varchar(30) | NO | PRI | NULL  |  | 
| passportNo | varchar(30) | NO | MUL | NULL  |  | 
| fromDate  | date  | NO |  | 0000-00-00 |  | 
| toDate  | date  | NO |  | 0000-00-00 |  | 
| estimatedCost | int(11)  | NO |  | NULL  |  | 
+---------------+-------------+------+-----+------------+-------+ 


delimiter // 
    create trigger estimatedCost_bi 
    after insert on ticketBooking 
    for each row 
    begin 
    set @package1=(select(sum(ticketprice*numTickets) 
    from attraction join ticketBooking using(attractionID) 
    join package using(packageNo) 
    where package.packageNo=new.packageNo); 

update package join ticketBooking using(packageNo) 

set estimatedCost = @package1 

where ticketBooking.packageNo=new.packageNo; 
end// 
delimiter ; 
+0

Как это не работает? Вы получаете какие-либо ошибки? – Nicholas

ответ

0

При публикации вопросов в будущем это действительно помогает включить сообщение об ошибке. Вот.

ОШИБКА 1064 (42000): У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом «с привлечением присоединиться к ticketBooking используя (attractionID)

Ваша основная ошибка синтаксиса здесь непосредственно перед„от притяжения“, мы находим

set @package1=(select(sum(ticketprice*numTickets) 

Проблема заключается в том, что SELECT() недопустим синтаксис. Правильный синтаксис - это SELECT, за которым следует пробел. Это, как представляется, дополнительный непревзойденная кронштейн, так что вы можете просто удалить его, как так:

delimiter // 
create trigger estimatedCost_bi 
after insert on ticketBooking 
for each row 
begin 
set @package1=(select sum(ticketprice*numTickets) 
from attraction join ticketBooking using(attractionID) 
join package using(packageNo) 
where package.packageNo=new.packageNo); 

пакет обновления присоединиться ticketBooking используя (packageNo)

набор estimatedCost = @ package1

где ticketBooking.packageNo = new.packageNo; конец // разделитель;

Смежные вопросы