Knex.js を介して次のようなクエリを生成しようとしています。
INSERT INTO table ("column1", "column2")
SELECT "someVal", 12345
WHERE NOT EXISTS (
SELECT 1
FROM table
WHERE "column2" = 12345
)
基本的に、特定の値がまだ存在しない場合にのみ値を挿入したいと考えています。しかし、Knex.js はこれを行う方法を認識していないようです。(値なしで)呼び出すとknex.insert()
、「デフォルト値を挿入」クエリが生成されます。
私は次のことを試しました:
pg.insert()
.into(tableName)
.select(_.values(data))
.whereNotExists(
pg.select(1)
.from(tableName)
.where(blah)
);
しかし、それでもデフォルト値が得られます。それを尊重する.columns(Object.keys(data))
ことを期待してa を追加しようとしましたが、うまくいきませんでした。insert()
必要なクエリを knex で生成することは可能ですか? または、Knex.js メソッドを使用せずに生のクエリを作成するだけでよいでしょうか?