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.
David J.