Triggers on MYSQL IPAGE -


hi i'm import database stucture local database ipage.

i recieved error goes this:

#1064 - have error in sql syntax; check manual corresponds mysql server version right syntax use near '' @ line 3

my query used was

create trigger `pm_sales_agent_bdel` before delete on `pm_sales_agent`  each row begin delete `pm_sales_agent_quota` `fk_sales_agent_id` = old.id; end 

i have tried query checker found in google , says query fine: here link: mysql syntax check

what seems problem? thank in advance!

begin , end used indicate multiple statements belong together. have 1 delete statement, therefore ; ending create trigger statement. end confusing mysql. either write this:

create trigger `pm_sales_agent_bdel` before delete on `pm_sales_agent`  each row  delete `pm_sales_agent_quota` `fk_sales_agent_id` = old.id; 

or change delimiter:

delimiter $$ create trigger `pm_sales_agent_bdel` before delete on `pm_sales_agent`  each row  begin delete `pm_sales_agent_quota` `fk_sales_agent_id` = old.id; end $$ delimiter ; /*don't forget change back*/ 

update:

to address error

#1419 - not have super privilege , binary logging enabled (you might want use less safe log_bin_trust_function_creators variable)

you have specify characteristic of trigger (or function). characteristic can be

  • [not] deterministic
  • contains sql
  • no sql
  • reads sql data
  • modifies sql data

from manual:

a routine considered “deterministic” if produces same result same input parameters, , “not deterministic” otherwise. if neither deterministic nor not deterministic given in routine definition, default not deterministic. declare function deterministic, must specify deterministic explicitly.


contains sql indicates routine not contain statements read or write data. default if none of these characteristics given explicitly. examples of such statements set @x = 1 or release_lock('abc'), execute neither read nor write data.


no sql indicates routine contains no sql statements.


reads sql data indicates routine contains statements read data (for example, select), not statements write data.


modifies sql data indicates routine contains statements may write data (for example, insert or delete).

read more here.

also, in case want ensure data integrity code, should have @ on delete cascade option of foreign keys.
deletes data child tables when delete data parent table.


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -