簡體   English   中英

如何在一張表中插入多個對象?

[英]How to insert multiple objects into one table?

有一個表entityLinks ,我想通過一個查詢插入多個值。 該表是使用此查詢定義的:

CREATE TABLE entityLinks(
 id INTEGER NOT NULL references posts(id) ON DELETE CASCADE,
 tag VARCHAR(255) NOT NULL references tags(tag) ON DELETE CASCADE);

打算用於插入的數據如下所示:

  1. 標簽數組,如['mytag1', 'mytag2, ...] ;
  2. 與標簽相關的實體的ID (例如帖子)。

如果需要,我可以將它們組合成對象數組( [{id: 1, tag: 'mytag1'}, {id:1, tag: 'mytag2'}, ... ] )。 此查詢中所有標簽的 ID 相同,但從一個查詢到另一個查詢不同。

我知道如何插入多個標簽

INSERT INTO tags(tag)
        SELECT * FROM unnest($1::text[])

($1 - 是一個變量,像this.pool.query(query, [tags])這樣作為值傳遞); ...但是當我嘗試相同時,未嵌套已取消嵌套所有級別的排列 ([ [1, ' unnest '], [1, 'mytag2'],... ] => "1, 'mytag1', 1 , 'mytag2', ... "。錯誤是:錯誤:格式錯誤的記錄文字:“1” (1 - 是 id)

我嘗試使用對象數組,但收到此錯誤:格式錯誤的記錄文字:“{“id”:179,“tag”:“myTag1”}”

基本上我想插入與相同 id 鏈接的不同標簽(一個查詢相同),但也有興趣了解如何一次插入多個對象(將來可能會有用)。

提前致謝!

這是你想要的嗎?

INSERT INTO entitlyLinks (id, tag)
    SELECT 1, tag
    FROM unnest($1::text[]) t(tag);

注意:我建議調用id post_id ,所以很清楚它指的是什么。

@Gordon Linoff的幫助下,我編寫了正確的查詢

INSERT INTO entityLinks(post_id, tag)
        SELECT $1, tag
        FROM unnest($2::text[]) as tag;

也許將來對某人有用。 數據是這樣傳遞的:

this.pool.query(queries.addLinks, [post_id, tags]); 
post_id: number, tags: string[];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM