MYSQL Create Event - mysql

I am trying to expand my knowledge with MYsql and every time I run this via workbench, I get an syntax error but I can not seem to find it. I have been looking all over google for help with this and I did copy 2 tutorials to get to this stage.
DELIMITER $$
CREATE EVENT[IF NOT EXIST]`warning_reset`
ON SCHEDULE EVERY 1 WEEK
STARTS '2017-03-06 18:00:00'
ON COMPLETION PRESERVE
DO BEGIN
call warning_script;
END */$$
DELIMITER ;
Error Below:
Error Code: 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 '*/' at line 7

The event creation syntax is, to put it politely, gnarly.
Here's a rewrite of your code that works.
DELIMITER $$
CREATE EVENT `warning_reset`
ON SCHEDULE EVERY 1 WEEK
STARTS '2017-03-06 18:00:00'
ON COMPLETION PRESERVE
DO BEGIN
call something_or_other;
END $$
DELIMITER ;
It's best to drop and recreate events rather than use IF NOT EXISTS. If you do use IF NOT EXISTS don't use square brackets.
For some reason you had */ in your code. That's a close-comment tag. I took it out.

Related

MySql Syntax error when creating trigger to insert calculated value

This is my first time trying to create a MySql trigger but I'm running into syntax errors that I can't identify. I am trying to have the trigger insert a calculated value when a row is updated. Below is my code, but I keep getting syntax errors when I try to execute it, and I cannot see where the error is. Can someone please look, what am I doing wrong?
DROP TRIGGER ins_cop_dhw;
CREATE TRIGGER ins_cop_dhw BEFORE INSERT ON `2017010001_data`
FOR EACH ROW
BEGIN
IF (NEW.`_007E` = 1 AND `_00A2` > 0) THEN
SET NEW.`_00B7` = NEW.`_0096` / NEW.`_00A2`;
END IF;
IF (NEW.`_007D` = 1 AND `_00A2` > 0) THEN
SET NEW.`_00B8` = (NEW.`_0096` / NEW.`_00A2`);
END IF;
END;
Here is the error I get in MySQL Workbench, but it's not much help. :/
Error Code: 1064. You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near '' at line 5
MySQL Workbench highlights the end of line 6 as the start of the syntax error.
As said by #Akina I was missing the delimiter statements. Here is fixed code.
delimiter //
DROP TRIGGER ins_cop_dhw;
CREATE TRIGGER ins_cop_dhw BEFORE INSERT ON `2017010001_data`
FOR EACH ROW
BEGIN
IF (NEW.`_007E` = 1 AND NEW.`_00A2` > 0) THEN
SET NEW.`_00B7` = NEW.`_0096` / NEW.`_00A2`;
END IF;
IF (NEW.`_007D` = 1 AND NEW.`_00A2` > 0) THEN
SET NEW.`_00B8` = (NEW.`_0096` / NEW.`_00A2`);
END IF;
END//
delimiter ;
As per the advice of #Akina I read the Create Procedure documentation from the dev.mysql.com site and the below quote highlighted the importance of using delimiter
The example uses the mysql client delimiter command to change the statement delimiter from ; to // while the procedure is being defined. This enables the ; delimiter used in the procedure body to be passed through to the server rather than being interpreted by mysql itself. See Section 25.1, “Defining Stored Programs”.

When Creating Trigger I got Error #1064 in Mysql 5

Error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6
My Trigger
CREATE TRIGGER `register_notification_after_register`
`AFTER INSERT ON register FOR EACH ROW BEGIN
Set #notification = CONCAT('New Member Register. Membership Code is',' ',new.membership_no,'.');
Set #notificationfor =CONCAT('New Membership');
call notification_masterAddUpdate(1,#notification,#notificationfor,new.reg_date,1);
END
try this:
DELIMITER $$
CREATE TRIGGER `register_notification_after_register`
AFTER INSERT ON register FOR EACH ROW BEGIN
Set #notification = CONCAT('New Member Register. Membership Code is',' ',new.membership_no,'.');
Set #notificationfor =CONCAT('New Membership');
call notification_masterAddUpdate(1,#notification,#notificationfor,new.reg_date,1);
END
$$ -- I am done server, end of block
DELIMITER ;
you had an extra backtick on line two. One needs to set the DELIMITER to block the whole thing. With create event, create stored proc, create trigger, delimiters clue the server into when the whole chunk is done. Remember that the ; ends a statement. The delimiter statement suspends that in favor of something else, then resets at end of block

getting error when creating EVENT in MySQL

When i'm trying to create an EVENT in my MySQL getting this error
Script line: 1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'EVENT `e_hourly`
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out s' at line 1
I'm attaching my create EVENT code here
CREATE EVENT `e_hourly`
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Clears out sessions table each hour.'
DO call testing();#here i'm trying to call a stored proc
Your Event Code seems to be fine, perhaps you don't have support for events in your mysql version?
We usually format events as:
DELIMITER $$
DROP EVENT IF EXISTS E_Hourly$$
CREATE EVENT E_Hourly ON SCHEDULE EVERY 1 HOUR COMMENT 'Clears out sessions table each hour' DO
EV:BEGIN
CALL Testing();
END$$
DELIMITER ;
SET GLOBAL event_scheduler = ON;

MySQL CREATE TRIGGER and DELIMITER ISSUES

I am trying to make a database that does some inventory checking, and I am working on some triggers to update everything as required. In this case, that I want to do is to take the current availability (disponibilidad) of an ingredient from the ingredients table, add to it how much is taken or added, and then save that value into the table stock_disponibilidad, as you can see from the trigger code I am trying to use.
DELIMITER $$
CREATE TRIGGER `update_disponibilidad_variacion` BEFORE INSERT ON `stock_disponibilidad`
FOR EACH ROW BEGIN
DECLARE old_disp DOUBLE DEFAULT 0;
SELECT disponibilidad INTO old_disp FROM ingredientes WHERE id = NEW.ingredientes_id;
NEW.disponibilidad = old_disp + NEW.variacion;
END$$
DELIMITER ;
However, whenever I execute the query to create the trigger, I get the following error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.disponibilidad = old_disp + NEW.variacion; END' at line 5
I've done everything I read about this issue, still without result. What am I doing wrong?

MySQL stored proc not getting created

So I have this stored proc that will not get created when I run the file.
DELIMITER //
DROP PROCEDURE IF EXISTS msd.test_proc//
CREATE PROCEDURE msd.test_proc()
BEGIN
SELECT
'Hello proc'
FROM
msd.zipcode_lookup;
END//
DELIMITER ;
When I run this I get an error code 1064 at line 1 when I execute in RazorSQL. Here is the complete error message:
ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near '//
CREATE PROCEDURE msd.test_proc()
BEGIN
SELECT
'Hello proc'
FROM ' at line 1
Error Code:1064
I've tried other variations and still get errors. I am sure this is something basic I am missing. I appreciate any help.
Thanks.
As stated on the RazorSQL website:
The DELIMITER statement is not part of the MySQL language. It is a command supported by certain MySQL tools. This command tells those MySQL programs to scan for a certain character that indicates the end of a query or statement.
RazorSQL does not support using the DELIMITER command. The SQL statement delimiter value used by RazorSQL can be changed using the preferences window. The default values is the semi-colon.