我使用的是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
如何做到这一点?
答案 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()
的子选择。