使用LOOP进行插入?

时间:2016-04-05 01:44:52

标签: sql postgresql plpgsql postgresql-9.4

我使用的是PostgreSQL 9.4.5,我是PL / pgSQL的新手 我需要为users表中的每个用户插入一条消息记录。

这样的事情:

  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

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用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()的子选择。