I have to insert unique value for a row but has to put check on 3 columns collectively ((unique value(col1 && col2 && col3) == true)
I found a solution here it is
query = select exists(select 1 from titles where "col1"='${col1}' AND "col2"='${col2}' AND "col3"='${col3}');
This query would return true or false based on the entries of the table
if(query == true)
execute insert into table values ('col1','col2','col3','col4','col5');
I am inserting multiple records from a json file using promises.
Is there any way to execute this in single sequelize.query()
.
1 Answer 1
Create a UNIQUE
index or constraint on (col1, col2, col3)
- if you don't have one already.
Then use INSERT ... ON CONFLICT ... DO NOTHING
. That's simpler, faster and more reliable, and unlike the route you had in mind, it's also safe against race conditions.
Related:
- What does a CONSTRAINT have to do with my unique index?
- What happens with duplicates when inserting multiple rows?
Be aware of NULL handling:
Explore related questions
See similar questions with these tags.