我基本上试图在假装表格是某些列表的帖子中实现与c#
相当的东西
List<Comment> comments;
List<Post> posts;
//SELECT
foreach (var comment in comments.OrderBy(c => c.id))
{
//INSERT
var post = new Post(title: comment.title);
posts.Add(post);
//UPDATE
comment.postId = post.id;
}
基本上,我正在添加一个新的“父”表,我需要在迁移中运行一些代码,这样每个现有的“子”都有一个父代。我的postgres技能有限,所以我不知道从哪里开始。
这是我到目前为止所拥有的
DO
$do$
BEGIN
FOR comment IN
SELECT * FROM comments ORDER BY id
LOOP
INSERT INTO posts (title)
VALUES (comment.title);
-- how do I update???
END LOOP;
END
$do$;
答案 0 :(得分:0)
除非我错过了这艘船,否则我认为这就是你所追求的:
DO
$$
DECLARE
komment comments;
pid bigint;
BEGIN
FOR komment IN
SELECT * FROM comments ORDER BY id
LOOP
INSERT INTO posts (title)
VALUES (komment.title)
returning id into pid;
update comments
set post_id = pid
where id = komment.id;
END LOOP;
END
$$;
这预先假定posts.id
是一个序列,默认为序列或者有其他一些自动填充机制,我认为这是你想要的。