Does mysql have write conflict for relative value updates? - mysql

Assuming I have run the following two updates:
Update cost = cost-1 where Primary_id = 1;
Update cost = cost-1 where Primary_id = 1;
And they happened at the same time.
Will this be a write conflict? I am assuming not since I am updating them with relative values.
Any help will be appreciated!
I tried to read the mysql documentation, but didn't find related topics.

Related

KNIME mysql table update

I am just now learning KNIME. I have successfuly set up a MySQL connector and connected a database reader to it. Then I did a database writer that basically aggregates data and pushes it to a new table.
My problem comes when I just need to do a simple update statement on my newly generated table.
I basically need to say update table1 set year = 2017 where ID < 2000;
I have looked and tried for hours but I cannot seem to figure out how to just run a simple update statement on a table from KNIME.
Please let me know if you need anymore information and as always thank you so much in advance for the help!
You can do the following (though not in a transaction):
read the rows and with Row Filter select those with ID < 2000
change the year column to 2017 with the Constant Value Column
use the Database Update node with SET column year and WHERE columns all others (or just id if that is unique).

Can't specify target table for update in FROM clause - Mysql 5.7.10 - derived_merge not working

I have the following query:
update tblwerknemerdienst toUpdate
set datumtot = (select subdate(datumvanaf,1)
from (select * from tblwerknemerdienst) nextDienst
where nextDienst.Werknemer = toUpdate.Werknemer
and nextDienst.datumvanaf > toUpdate.DatumVanaf
order by DatumVanaf
LIMIT 1)
WHERE DatumTot IS NULL;
The query runs fine on MySql versions other than MySql 5.7.10. I've searched around the web and found that you have to set derived_merge=off, but sadly this had no effect and the query still fails with the same error.
I have also tried several different ways of rewriting the query, but all to no avail.
Is there something I'm missing or is there another way to accomplish this?
In the end I fixed this by rewriting the whole thing in a procedure, where I used a cursor to execute the query and get the necessary data. Then I perform the update statement based upon the fields selected in the cursor.
This seemed to be the only way to reliably perform the operation required on different versions of MySql.

MySQL Update multiple tables query syntax

I'm trying to update two tables in MySQL with one query, and am running into an error. I've looked at similar situations and resolutions, but can't seem to translate them to my specific query/situation as I am continuing to get the same error. My goal seems like there is an obvious solution I am missing. My Query is as follows:
UPDATE table_pr, table_pu
INNER JOIN table_pu ON table_pr.id = table_pu.pr_id
SET table_pr.cpr2 = table_pu.cpr2_id, table_pu.cpr_updated = '1'
WHERE table_pu.cpr2_date < CURRENT_DATE()
When I run the Update, I get Not unique table/alias: 'table_pu' returned. I prefer to not use aliases in this, but I've also tried to set unique aliases for the tables with the same result. If my approach should be modified, my ultimate goal is to have table_pr.cpr2 set to table_pu.cpr2_id based on WHERE table_pu.cpr2_date < CURRENT_DATE() and if the update is run, to also set table_pu.cpr_updated = '1'
Any help or guidance would be greatly appreciated.
Removing the second table reference in the UPDATE statement resolved the issue.

MySQL UPDATE statement with multiple WHERE clauses

I am trying to execute an UPDATE statement as follows:
UPDATE table_name
SET goal_seq = 'xyz'
WHERE league_id = 20
AND home = 0
AND away = 0;
In trying to work out why it wasnt working I have established that you cant have multiple WHERE clauses (is that correct?) but I cant figure out how to get round it.
Any help much appreciated,
P
you CAN have multiply conditions after WHERE statement - go to Mysql docs for more information and some examples - i believe the key table in your code is just a replacement for actual table name? If this query doesn't work pls provide the error which server returns - without it we cannot help you.

How to store MySQL response into a table after executing a query?

When I executes a query on MySQL workbench I get the results of that query. If there was an error then it gives you an error code along with some data. If it passes then it returns the total records inserted/updates/ total warning and a list of all warnings.
I have a stored procedure that executes INSERT INTO ...... ON DUPLICATE KEY UPDATE
What I need to do is to create a table that will store all the results returned after every query execution.
I can want to capture the following
total inserts
total updates
total warning
if there are warning then I would like to capture all the notes
returned by MySQL.
if there is an error in the query for what every reason then I need
to capture the error output.
The reason why I need to do this is because this procedure is triggered by an event. So I need to know what happened on a daily bases so I can investigate error/warning.
Thanks
So... this is a bit late here, but I will give this a go.
If anyone else is looking for something like this...
I believe what you are looking for is performance_schema
If you have that option in your version of mysql.
(currently using AWS/RDS 5.6.34-log at this time ).
You can look thru the tables after you have it on and see the performance, locks inserts, updates, warnings(granted you have your sql_mode set), and other various things that I believe you are desiring.
There are a slew of things in it, but it taxes heavily on the mysql that already seems to have issues, at least what i have see using the out of the box settings from amazon.
Examples:
SELECT * FROM performance_schema.events_statements_history LIMIT 1000;
SELECT * FROM performance_schema.events_statements_history_long LIMIT 1000;
SELECT * FROM performance_schema.mutex_instances LIMIT 1000;
SELECT * FROM performance_schema.events_waits_current LIMIT 1000;
SELECT * FROM performance_schema.events_stages_summary_by_account_by_event_name LIMIT 1000;
SELECT * FROM performance_schema.events_stages_summary_by_host_by_event_name LIMIT 1000;
SELECT * FROM performance_schema.events_stages_summary_by_thread_by_event_name LIMIT 1000;
Not affiliated or associated with the companies below.
MySQL Documents
datadoghq ref: on setting up performance_schema for AWS