SQL safe way for double run
I have learned this from a friend and co-worker of mine. If you have a sql script that requires to insert rows on a table and those rows can't be duplicated, even if the table has unique on the right columns, there is a trick that you can use that will avoid sql errors if the script is ran multiple times.
insert into a_table values (uuid(), 'a', 'b', 'c', now());
If you ran that sql multiple times, it can, insert the row multiple times or throw an error if there is a unique set for rows on the table. To avoid the SQL to throw an error or insert the row multiple times you can use the following trick:
insert into a_table
select uuid(), 'a', 'b', 'c', now() from (select 1) as `tmp` where 0 = (select count(id) from a_table where a_column = 'a');
If the count of the condition is 1 or higher, the insert will fail, avoiding a double insert.
It will be a much slower insert (keep that in mind for big inserts), but it is a bit safer.
Written by Cristiano Diniz da Silva
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Mysql
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#