简体   繁体   中英

Mysql trigger creation fails with error #1064

I am trying to create a trigger After_Insert on table ORDERS via phpMyAdmin:

DECLARE v1 VARCHAR DEFAULT NULL;
DECLARE v2 VARCHAR DEFAULT '0';
IF NEW.PFIELD =0 
THEN 
(
SELECT a.NAME,a.CONTACT INTO v1,v2 FROM ADDRESSBOOK a WHERE a.ID=NEW.ID_SENDER LIMIT 1;
REPLACE INTO _SENDERS (AID,OID,OTP,NAME,CONTACT) VALUES (NEW.ID_SENDER,NEW.ID,NEW.OTYPE,v1,v2);
)
ELSE 
(
SELECT ap.NAME,ap.CONTACT INTO v1,v2 FROM ADDRESSBOOK_P ap WHERE ap.ID=NEW.PFIELD LIMIT 1;
REPLACE INTO _SENDERS_P (AID,OID,OTP,NAME,CONTACT) VALUES (NEW.PFIELD,NEW.ID,NEW.OTYPE,v1,v2);
)
END IF;

but i am getting the default MySQL error:

MySQL said: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE v1 VARCHAR DEFAULT NULL; DECLARE v2 VARCHAR DEFAULT NULL; IF NEW....' at line 1

What i am doing wrong? I am an experienced mySQL/php user, but not really friend with the triggers, now i decided to rewrite my hardcoded php code into triggers (where it can be done)

thanks for your suggestions

I got this problem solved, honestly don't know where exactly was the problem, but when i wrote into new SQL script the WHOLE DROP IF EXISTS / CREATE script, he MySQL server accepted that trigger and it works correctly.

weird.. thanks for the indirect suggestion @Akina

now, my script looks like this:

DELIMITER //

CREATE TRIGGER _AI_ORDERS_
AFTER INSERT
   ON ORDERS FOR EACH ROW

BEGIN

DECLARE v1 VARCHAR DEFAULT NULL;
DECLARE v2 VARCHAR DEFAULT '0';
IF NEW.PFIELD =0 
THEN 
(
SELECT a.NAME,a.CONTACT INTO v1,v2 FROM ADDRESSBOOK a WHERE a.ID=NEW.ID_SENDER LIMIT 1;
REPLACE INTO _SENDERS (AID,OID,OTP,NAME,CONTACT) VALUES (NEW.ID_SENDER,NEW.ID,NEW.OTYPE,v1,v2);
)
ELSE 
(
SELECT ap.NAME,ap.CONTACT INTO v1,v2 FROM ADDRESSBOOK_P ap WHERE ap.ID=NEW.PFIELD LIMIT 1;
REPLACE INTO _SENDERS_P (AID,OID,OTP,NAME,CONTACT) VALUES (NEW.PFIELD,NEW.ID,NEW.OTYPE,v1,v2);
)
END IF;

END; //

DELIMITER ;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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