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
Post a Comment