如何避免在postgres数据库中插入空值

我有以下查询插入到多对多连接表中的数据

INSERT INTO playlist_genre(playlist_id, genre_id) VALUES (${playlistId}, ${genre1Id}), (${playlistId}, ${genre2Id}), (${playlistId}, ${genre3Id}) ); 

但是我遇到的问题是genre2Idgenre3Id值不是用户所需要的,所以可以是INTEGERNULL

我正在试图find一种方法来写这个相同的查询,但它只能插入如果存在一个值。 两列都有NOT NULL约束。

编辑

这是我的播放列表类

 class Playlist { constructor(playlist) { // required fields this.title = playlist.title; this.playlistType = playlist.playlistType; this.userId = playlist.userId; this.numberOfTracks = playlist.numberOfTracks; this.lengthInSeconds = playlist.lengthInSeconds; this.genre1Id = playlist.genre1Id; // not required fields this.genre2Id = playlist.genre2Id || null; this.genre3Id = playlist.genre3Id || null; this.description = playlist.description || null; this.releaseDate = playlist.releaseDate || null; } save() { return new Promise((resolve, reject) => { db.one(sqlCreatePlaylist, this) .then((insertedPlaylist) => { // Here is where i want to use insertedPlaylist's id // to insert data into 'playlist_genre' table resolve(insertedPlaylist); }) .catch(error => reject(error)); }); } 

这是sqlCreatePlaylist的样子

 INSERT INTO playlists( user_id, title, playlist_type, number_of_tracks, duration, description, release_date ) VALUES( ${userId}, ${title}, ${playlistType}, ${numberOfTracks}, ${lengthInSeconds}, ${description}, ${releaseDate} ) RETURNING *; 

只能插入不为空:

 insert into playlist_genre (playlist_id, genre_id) select playlist_id, genre_id from (values (${playlistid}, ${genre1id}), (${playlistid}, ${genre2id}), (${playlistid}, ${genre3id}) ) s (playlist_id, genre_id) where genre_id is not null