MySQL syntax error while creating a UPDATE Trigger Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manara Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How to get the max of two values in MySQL?Reference - What does this error mean in PHP?Why MySQL is giving this error while creating trigger?syntax error on conditional triggerUpdate trigger MySQL giving syntax errormysql triggers syntax errorError creating MySQL TriggerTrigger syntax error with MySQLTrigger code issues with MySQLPhpmyadmin MySQL trigger throws error 1362

Why didn't the Space Shuttle bounce back into space as many times as possible so as to lose a lot of kinetic energy up there?

The art of proof summarizing. Are there known rules, or is it a purely common sense matter?

What's parked in Mil Moscow helicopter plant?

Could moose/elk survive in the Amazon forest?

Co-worker works way more than he should

std::is_constructible on incomplete types

Is Diceware more secure than a long passphrase?

How to get even lighting when using flash for group photos near wall?

How to keep bees out of canned beverages?

Suing a Police Officer Instead of the Police Department

What is /etc/mtab in Linux?

All ASCII characters with a given bit count

Mistake in years of experience in resume?

Is it acceptable to use working hours to read general interest books?

Is accepting an invalid credit card number a security issue?

"My boss was furious with me and I have been fired" vs. "My boss was furious with me and I was fired"

Why does the Cisco show run command not show the full version, while the show version command does?

Expansion//Explosion and Siren Stormtamer

Second order approximation of the loss function (Deep learning book, 7.33)

Retract an already submitted recommendation letter (written for an undergrad student)

Check if a string is entirely made of the same substring

Reattaching fallen shelf to wall?

Prove the alternating sum of a decreasing sequence converging to 0 is Cauchy.

Multiple fireplaces in an apartment building?



MySQL syntax error while creating a UPDATE Trigger



Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar Manara
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How to get the max of two values in MySQL?Reference - What does this error mean in PHP?Why MySQL is giving this error while creating trigger?syntax error on conditional triggerUpdate trigger MySQL giving syntax errormysql triggers syntax errorError creating MySQL TriggerTrigger syntax error with MySQLTrigger code issues with MySQLPhpmyadmin MySQL trigger throws error 1362



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








1















I am trying to create a trigger on updating the salary field of this table.
customers(ID, Name, Age, Address, Salary) from this site SQL Trigger
While creating it shows the following 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 'OR INSERT OR UPDATE ON customers
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
' at line 2



Here is the code snippet:



BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
sal_diff number;
BEGIN `enter code here`
sal_diff := :NEW.salary - :OLD.salary;
dbms_output.put_line('Old salary: ' || :OLD.salary);
dbms_output.put_line('New salary: ' || :NEW.salary);
dbms_output.put_line('Salary difference: ' || sal_diff);
END


Note that, I'm using phpMyAdmin. Does dbms_ouput.put_line() works there?










share|improve this question

















  • 3





    You’re reading a site for PL/SQL which is for Oracle and using MySQL. They don’t use the same language. Look for MySQL documentation

    – Sami Kuhmonen
    Mar 9 at 6:38











  • And, likewise, DBMS_OUTPUT is a package available in Oracle database.

    – Álvaro González
    Mar 9 at 9:55

















1















I am trying to create a trigger on updating the salary field of this table.
customers(ID, Name, Age, Address, Salary) from this site SQL Trigger
While creating it shows the following 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 'OR INSERT OR UPDATE ON customers
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
' at line 2



Here is the code snippet:



BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
sal_diff number;
BEGIN `enter code here`
sal_diff := :NEW.salary - :OLD.salary;
dbms_output.put_line('Old salary: ' || :OLD.salary);
dbms_output.put_line('New salary: ' || :NEW.salary);
dbms_output.put_line('Salary difference: ' || sal_diff);
END


Note that, I'm using phpMyAdmin. Does dbms_ouput.put_line() works there?










share|improve this question

















  • 3





    You’re reading a site for PL/SQL which is for Oracle and using MySQL. They don’t use the same language. Look for MySQL documentation

    – Sami Kuhmonen
    Mar 9 at 6:38











  • And, likewise, DBMS_OUTPUT is a package available in Oracle database.

    – Álvaro González
    Mar 9 at 9:55













1












1








1








I am trying to create a trigger on updating the salary field of this table.
customers(ID, Name, Age, Address, Salary) from this site SQL Trigger
While creating it shows the following 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 'OR INSERT OR UPDATE ON customers
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
' at line 2



Here is the code snippet:



BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
sal_diff number;
BEGIN `enter code here`
sal_diff := :NEW.salary - :OLD.salary;
dbms_output.put_line('Old salary: ' || :OLD.salary);
dbms_output.put_line('New salary: ' || :NEW.salary);
dbms_output.put_line('Salary difference: ' || sal_diff);
END


Note that, I'm using phpMyAdmin. Does dbms_ouput.put_line() works there?










share|improve this question














I am trying to create a trigger on updating the salary field of this table.
customers(ID, Name, Age, Address, Salary) from this site SQL Trigger
While creating it shows the following 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 'OR INSERT OR UPDATE ON customers
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
' at line 2



Here is the code snippet:



BEFORE DELETE OR INSERT OR UPDATE ON customers 
FOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE
sal_diff number;
BEGIN `enter code here`
sal_diff := :NEW.salary - :OLD.salary;
dbms_output.put_line('Old salary: ' || :OLD.salary);
dbms_output.put_line('New salary: ' || :NEW.salary);
dbms_output.put_line('Salary difference: ' || sal_diff);
END


Note that, I'm using phpMyAdmin. Does dbms_ouput.put_line() works there?







mysql triggers






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 9 at 6:33









ImbecileImbecile

83




83







  • 3





    You’re reading a site for PL/SQL which is for Oracle and using MySQL. They don’t use the same language. Look for MySQL documentation

    – Sami Kuhmonen
    Mar 9 at 6:38











  • And, likewise, DBMS_OUTPUT is a package available in Oracle database.

    – Álvaro González
    Mar 9 at 9:55












  • 3





    You’re reading a site for PL/SQL which is for Oracle and using MySQL. They don’t use the same language. Look for MySQL documentation

    – Sami Kuhmonen
    Mar 9 at 6:38











  • And, likewise, DBMS_OUTPUT is a package available in Oracle database.

    – Álvaro González
    Mar 9 at 9:55







3




3





You’re reading a site for PL/SQL which is for Oracle and using MySQL. They don’t use the same language. Look for MySQL documentation

– Sami Kuhmonen
Mar 9 at 6:38





You’re reading a site for PL/SQL which is for Oracle and using MySQL. They don’t use the same language. Look for MySQL documentation

– Sami Kuhmonen
Mar 9 at 6:38













And, likewise, DBMS_OUTPUT is a package available in Oracle database.

– Álvaro González
Mar 9 at 9:55





And, likewise, DBMS_OUTPUT is a package available in Oracle database.

– Álvaro González
Mar 9 at 9:55












1 Answer
1






active

oldest

votes


















0














As said in the comments, you are using Oracle syntax, it can't work on MySQL.



Then, there's no reason to have this trigger on DELETE and INSERT because your aim is to compute the salary difference on a specific row before and after it get updated. You can't have a value NEW on DELETE, and you can't have a value OLD on INSERT.
Thus your computation is only meaningful on UPDATE.



Here's the correct MySQL syntax (I am assuming that you have a column sal_diff on your table)



DELIMITER $$
CREATE TRIGGER `update_sal_diff`
BEFORE UPDATE ON `customers `
FOR EACH ROW
BEGIN
SET NEW.sal_diff = NEW.salary - OLD.salary;
END $$
DELIMITER ;


If this is not what you are trying to achieve, edit your question and add clear requirements






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55074698%2fmysql-syntax-error-while-creating-a-update-trigger%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    As said in the comments, you are using Oracle syntax, it can't work on MySQL.



    Then, there's no reason to have this trigger on DELETE and INSERT because your aim is to compute the salary difference on a specific row before and after it get updated. You can't have a value NEW on DELETE, and you can't have a value OLD on INSERT.
    Thus your computation is only meaningful on UPDATE.



    Here's the correct MySQL syntax (I am assuming that you have a column sal_diff on your table)



    DELIMITER $$
    CREATE TRIGGER `update_sal_diff`
    BEFORE UPDATE ON `customers `
    FOR EACH ROW
    BEGIN
    SET NEW.sal_diff = NEW.salary - OLD.salary;
    END $$
    DELIMITER ;


    If this is not what you are trying to achieve, edit your question and add clear requirements






    share|improve this answer



























      0














      As said in the comments, you are using Oracle syntax, it can't work on MySQL.



      Then, there's no reason to have this trigger on DELETE and INSERT because your aim is to compute the salary difference on a specific row before and after it get updated. You can't have a value NEW on DELETE, and you can't have a value OLD on INSERT.
      Thus your computation is only meaningful on UPDATE.



      Here's the correct MySQL syntax (I am assuming that you have a column sal_diff on your table)



      DELIMITER $$
      CREATE TRIGGER `update_sal_diff`
      BEFORE UPDATE ON `customers `
      FOR EACH ROW
      BEGIN
      SET NEW.sal_diff = NEW.salary - OLD.salary;
      END $$
      DELIMITER ;


      If this is not what you are trying to achieve, edit your question and add clear requirements






      share|improve this answer

























        0












        0








        0







        As said in the comments, you are using Oracle syntax, it can't work on MySQL.



        Then, there's no reason to have this trigger on DELETE and INSERT because your aim is to compute the salary difference on a specific row before and after it get updated. You can't have a value NEW on DELETE, and you can't have a value OLD on INSERT.
        Thus your computation is only meaningful on UPDATE.



        Here's the correct MySQL syntax (I am assuming that you have a column sal_diff on your table)



        DELIMITER $$
        CREATE TRIGGER `update_sal_diff`
        BEFORE UPDATE ON `customers `
        FOR EACH ROW
        BEGIN
        SET NEW.sal_diff = NEW.salary - OLD.salary;
        END $$
        DELIMITER ;


        If this is not what you are trying to achieve, edit your question and add clear requirements






        share|improve this answer













        As said in the comments, you are using Oracle syntax, it can't work on MySQL.



        Then, there's no reason to have this trigger on DELETE and INSERT because your aim is to compute the salary difference on a specific row before and after it get updated. You can't have a value NEW on DELETE, and you can't have a value OLD on INSERT.
        Thus your computation is only meaningful on UPDATE.



        Here's the correct MySQL syntax (I am assuming that you have a column sal_diff on your table)



        DELIMITER $$
        CREATE TRIGGER `update_sal_diff`
        BEFORE UPDATE ON `customers `
        FOR EACH ROW
        BEGIN
        SET NEW.sal_diff = NEW.salary - OLD.salary;
        END $$
        DELIMITER ;


        If this is not what you are trying to achieve, edit your question and add clear requirements







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 9 at 9:33









        Thomas GThomas G

        7,54872033




        7,54872033





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55074698%2fmysql-syntax-error-while-creating-a-update-trigger%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            1928 у кіно

            Захаров Федір Захарович

            Ель Греко