如何在Postgres中更新一对多关系?

问题描述 投票:0回答:1

这是我的第一个餐桌问题。

CREATE TABLE "question" (
"question_id" serial NOT NULL,
"question" TEXT NOT NULL UNIQUE,
"added_at" TIMESTAMP NOT NULL,
"question_marks" integer NOT NULL,
CONSTRAINT "question_pk" PRIMARY KEY ("question_id"))

问题有很多选项,所以我用question_id引用了每个选项行>

CREATE TABLE "option" (
"option_id" serial NOT NULL,
"option" TEXT NOT NULL,
"option_question_id" integer NOT NULL,
"option_correct" BOOLEAN NOT NULL,
CONSTRAINT "option_pk" PRIMARY KEY ("option_id"))

ALTER TABLE "option" ADD CONSTRAINT "option_fk1" FOREIGN KEY ("option_question_id") REFERENCES "question"("question_id") ON DELETE CASCADE;

现在,如何在一个查询中更新两个表?

我正在构建一个API。以下给出的输出可供索取。该请求将回复问题详细信息和问题选项。

我能够更新问题,但是问题有很多选择,我该如何更新选项?

    "questionDetails": [
        {
            "question_id": 30,
            "question": "What is gravity of Saturn?",
            "added_at": "2020-02-20T18:30:00.000Z",
            "question_marks": 1
        }
    ],
    "options": [
        {
            "option_id": 19,
            "option": "20",
            "option_question_id": 30,
            "option_correct": true
        },
        {
            "option_id": 20,
            "option": "30",
            "option_question_id": 30,
            "option_correct": false
        },
        {
            "option_id": 21,
            "option": "40",
            "option_question_id": 30,
            "option_correct": false
        },
        {
            "option_id": 18,
            "option": "400000000",
            "option_question_id": 30,
            "option_correct": false
        }
    ]
}

现在可以更新此关系吗?

这是我的第一个餐桌问题。 CREATE TABLE“ question”(“ question_id”串行NOT NULL,“ question”文本NOT NULL UNIQUE,“ add_at” TIMESTAMP NOT NULL,“ question_marks”整数NOT NULL,CONSTRAINT ...

sql database postgresql database-design
1个回答
0
投票

您可以使用具有返回子句的CTE在单个查询中将多个操作链接在一起。

© www.soinside.com 2019 - 2024. All rights reserved.