使用 LOOP 进行插入?

Use LOOP for inserts?

我正在使用 PostgreSQL 9.4.5,我是 PL/pgSQL 的新手。
我需要在 users table.

中为每个用户插入一条消息记录

像这样:

  user_id = SELECT id from users;

  FOR i in user_id
    INSERT INTO "messages" ("sender_id", "receiver_id", "content", 
    "hashed_id", "created_at", "updated_at") VALUES (1,i,
    "Message text here",(SELECT concat(md5(random()::text),
    md5(random()::text))),'2016-04-04 20:30:32','2016-04-04 20:30:32')';
  END

如何做对?

您可以使用 insert . . . select:

INSERT INTO "messages" ("sender_id", "receiver_id", "content",  "hashed_id", "created_at", "updated_at") 
    SELECT 1, id, 'Message text here',
           concat(md5(random()::text), md5(random()::text)),
           '2016-04-04 20:30:32','2016-04-04 20:30:32'
    FROM users;

注意:您不需要 concat() 的子选择。