mysql triggers syntax error -



mysql triggers syntax error -

i having problem creating mysql trigger. trigger uses replace, when row replaced, reads row , saves info in table. if new row inserted tracking table, info not saved in other table, row didn't exist. need save tracking row if exists.

drop trigger if exists savetracking; create trigger savetracking before replace on 'orderstest.tracking' each row begin declare orderid integer; if new.invno != '' set orderid = (select orderid order_header invno = new.invno); insert comments (id, date_time, type, comments) values (orderid, sysdate(), \"o\", \"previous tracking: usps - old.trackno\"); endif; end;

this error get:

#1064 - have error in sql syntax; check manual corresponds mysql server version right syntax utilize near 'replace on 'orderstest.tracking' each row begin declare orderid integer' @ line 1

i using phpmyadmin seek , add together trigger.

mysql version software version: 5.0.95-rs

thanks,

steve

--- - table construction table `tracking` -- create table if not exists `tracking` ( `id` int(11) not null auto_increment, `invno` bigint(20) not null default '0', `carrier` varchar(5) not null default '', `trackno` varchar(50) not null default '', primary key (`id`), key `invno` (`invno`) ) engine=myisam default charset=latin1 auto_increment=3033 ; -- -- table construction table `comments` -- create table if not exists `comments` ( `comment_id` int(11) not null auto_increment, `id` int(11) not null default '0', `date_time` datetime not null default '0000-00-00 00:00:00', `type` char(1) not null default '', `comments` mediumtext not null, primary key (`comment_id`), key `id` (`id`) ) engine=myisam default charset=latin1 auto_increment=10426 ; -- -- table construction table `order_header` -- create table if not exists `order_header` ( `our_orderid` int(11) not null auto_increment, `orderid` varchar(20) not null default '0', `orderdatetime` datetime not null default '0000-00-00 00:00:00', `custid` int(11) not null default '0', `source` char(1) not null default '', `comments` mediumtext not null, `invno` bigint(20) not null default '0', `infoid` varchar(15) not null default '0', `remote_host` varchar(50) not null default '', `remote_addr` varchar(50) not null default '', `items` int(11) not null default '0', `paytype` varchar(20) not null default '', `cc_name` varchar(50) not null default '', `cc_num` tinyblob not null, `cc_valid` tinyblob not null, `cc_expire` varchar(10) not null default '', `avs_address` varchar(20) not null default '', `avs_zip` varchar(5) not null default '', `shipping` varchar(30) not null default '', `order_status` char(1) not null default '', `batch_no` int(11) not null default '0', `time_process` datetime not null default '0000-00-00 00:00:00', `fraud_flag` char(1) not null default '', `referrer` varchar(255) not null default '', `stats` char(1) not null default 'n', `country_code` char(2) not null default '', `zipzone` tinyint(4) not null default '0', `ship_zip` varchar(5) not null default '', `bank_name` varchar(50) not null default '', `bank_country_name` varchar(50) not null default '', primary key (`our_orderid`), key `order_status` (`order_status`), key `orderdatetime` (`orderdatetime`), key `invno` (`invno`), key `remote_host` (`remote_host`), key `custid` (`custid`), key `infoid` (`infoid`) ) engine=myisam default charset=latin1 auto_increment=320081 ;

i have changed trigger this.

drop trigger if exists savetracking; create trigger savetracking before insert on orderstest.tracking each row begin declare orderid integer; declare otrackno integer; set otrackno = (select trackno tracking invno = new.invno); if otrackno != '' set orderid = (select orderid order_header invno = new.invno); insert comments (id, date_time, type, comments) values (orderid, sysdate(), 'o', 'previous tracking: usps - otrackno'); delete trackno invno = new.invno; endif;

end;

the error

1064 - have error in sql syntax; check manual corresponds mysql server version right syntax utilize near '' @ line 4

there no replace triggers. have selection of insert, update, or delete.

if execute replace, cause both delete , insert triggers on table run.

also can't quote table name doing.

on 'orderstest.tracking'

should be

on `orderstest`.`tracking`

and should larn how utilize delimiter before seek define triggers contain compound statements.

mysql syntax triggers

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -