I just want to ask if it's possible to insert data if it's not existing yet.
This seems more like a philosophical question than a technical one... but the answer is yes:
CREATE TABLE test_t (a varchar, b varchar, c integer); INSERT INTO test_t SELECT '1', '2', 3 WHERE false; --where false causes the data to effectively "not exist"
As for ON CONFLICT: conflicts can only happen between things that exist.