Created query.
With this query update table 2_1_transactionpartners
.
Then where value in another table (2_1_journal
) is the same as value in table 2_1_transactionpartners
, update the another table.
BEGIN;
UPDATE 2_1_transactionpartners SET
PreviousCompanyName = CASE NumberRenamed WHEN ? THEN CompanyName END,
CompanyName = CASE NumberRenamed WHEN ? THEN ? END,
/* others WHEN ? THEN ? END */
BankAccountNumber = CASE NumberRenamed WHEN ? THEN ? END
WHERE NumberRenamed IN (?);
/* here starts problem */
UPDATE 2_1_journal
INNER JOIN 2_1_transactionpartners ON
(2_1_journal.TransactionPartnerName = 2_1_transactionpartners.PreviousCompanyName)
SET 2_1_journal.TransactionPartnerName = 2_1_transactionpartners.CompanyName;
COMMIT;
When tested see that all updates. But get such error SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
If divide the query into two queries. Second query like
UPDATE 2_1_journal
INNER JOIN 2_1_transactionpartners ON (2_1_journal.TransactionPartnerName = 2_1_transactionpartners.PreviousCompanyName)
SET 2_1_journal.TransactionPartnerName = 2_1_transactionpartners.CompanyName;
Then all works without error. Can I get these two updates to work in one query without errors?
Update
After execution of the statement (with 2 queries) placed $stmt->closeCursor();
and no error