3 Replies Latest reply on May 20, 2020 1:20 PM by Dave Stokes-MySQL Community Team-Oracle

    Table trigger updates correctly and then back to NULL

    MartyB

      I am running MySQL v8 with LibreOffice Base as the front end.  I have the following table trigger defined:

      DELIMITER $$

      CREATE TRIGGER bol.get_commodity_number

      BEFORE UPDATE ON

      bol.packinglistdetail FOR EACH ROW

      BEGIN

      SET NEW.CommodityNumber = (SELECT D.CommodityNumber

                                 FROM packinglistdetail P INNER JOIN

                                      description_picklist D

                                      ON P.Commodity = D.Commodity

                                      WHERE P.CommodityNumber IS NULL );

      END$$

       

      It correctly assigns the commodity number from the subquery upon the first save of the table.  However, if you go back and update any row on that table, the CommodityNumber gets set to NULL.  Then if you edit any row again, it correctly gets the commodity number from the subquery.  It alternates back and forth from the correct to the NULL value.  Any help would be appreciated.

        • 1. Re: Table trigger updates correctly and then back to NULL
          Dave Stokes-MySQL Community Team-Oracle

          1. Are you running the query that uses the trigger in a transaction or have auto commit turned on?

          2/ What is the setting for the consistency setting?

          • 2. Re: Table trigger updates correctly and then back to NULL
            MartyB

            I'll have to verify the Auto Commit flag and consistency settings.  I wouldn't know offhand how those are configured. I'll find that out shortly.  I'm relatively new to MySQL though I'm quite familiar with MS SQL.  As for the first question, I have a form in LibreOffice Base that updates the PackingListDetail table.  When inserting new a record and saving it, the table trigger updates the CommodityNumber field correctly.  However, when subsequently updating that same record in LibreOffice Base, the CommodityNumber field gets assigned a NULL value. There are no other table triggers that assign NULL values to this table.  But if you update that record again in LibreOffice Base, the CommodityNumber field gets updated correctly.  It oscillates back and forth between NULL and the correct value as that record is updated.  I haven't confirmed if the behavior works the same if I run update and insert queries into the table from the MySQL Workbench.  I should have done that first to rule out if LibreOffice Base is making some table calls that I can't currently see.  I don't know if MySQL has a query analyzer type tool like MS SQL to allow you to see what SQL calls are being executed real-time against the MySQL server.  I assume there is.

            • 3. Re: Table trigger updates correctly and then back to NULL
              Dave Stokes-MySQL Community Team-Oracle

              Please repost this problem on mysqlcommunity.slack.com and/or forums.mysql.com as the engineers actively monitor the posts.  This is really odd situation.