Forum Stats

  • 3,768,302 Users
  • 2,252,772 Discussions
  • 7,874,521 Comments

Discussions

Table trigger updates correctly and then back to NULL

MartyB
MartyB Member Posts: 2
edited May 20, 2020 9:20AM in MySQL Community Space

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.

Answers

  • Dave Stokes-MySQL Community Team-Oracle
    Dave Stokes-MySQL Community Team-Oracle MySQL Community Manager TexasMember Posts: 366 Employee
    edited May 19, 2020 9:13AM

    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?

    Dave Stokes

    MySQL Community Manager

  • MartyB
    MartyB Member Posts: 2
    edited May 19, 2020 1:00PM

    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.

  • Dave Stokes-MySQL Community Team-Oracle
    Dave Stokes-MySQL Community Team-Oracle MySQL Community Manager TexasMember Posts: 366 Employee
    edited May 20, 2020 9:20AM

    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.

    Dave Stokes

    MySQL Community Manager