使用 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()
的子选择。
我正在使用 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()
的子选择。