Php 在第三个表中插入数据,并在另外两个表中插入值

Php 在第三个表中插入数据,并在另外两个表中插入值,php,database,postgresql,insert,sql-insert,Php,Database,Postgresql,Insert,Sql Insert,我在postgres数据库中有3个表。使用此代码创建: CREATE TABLE AUTHOR( ID SERIAL PRIMARY KEY, NAME TEXT ); CREATE TABLE BOOK( ID SERIAL PRIMARY KEY, NAME TEXT ); CREATE TABLE BOOK_AUTHOR( BOOK_ID INTEGER REFERENCES BOOK(ID), AUTHOR_ID INTEGER REFE

我在postgres数据库中有3个表。使用此代码创建:

CREATE TABLE AUTHOR(
    ID SERIAL PRIMARY KEY,
    NAME TEXT
);
CREATE TABLE BOOK(
    ID SERIAL PRIMARY KEY,
    NAME TEXT
);
CREATE TABLE BOOK_AUTHOR(
    BOOK_ID INTEGER REFERENCES  BOOK(ID),
    AUTHOR_ID INTEGER REFERENCES AUTHOR(ID)
);
一本书可以有多个作者

我想在作者表中插入多个作者

书桌里的书

并在BOOK_AUTHOR表中配对

例如:如果书X是由A先生和B先生写的

我希望表格内容是这样的

AUTHOR
ID-NAME
1, Mr. A
2, Mr. B

BOOK
ID-NAME
1, X

BOOK_AUTHOR
BOOK_ID-AUTHOR_ID
1,1
1,2
我正在使用postgres php

我知道我可以在author表中插入数据。在book表中插入数据。对它们进行查询以获取ID

然后在book_author表中插入

但有没有办法更有效地插入这些数据


最好的方法是什么?

PostgreSQL有一个非常方便的“返回”函数,您可以在这里这样使用:

WITH authors AS (
    INSERT INTO 
        author (name) 
    VALUES 
        ('Mr. A'), ('Mr. B')
    RETURNING
        id
), books AS (
    INSERT INTO
        book (name)
    VALUES
        ('X')
    RETURNING
        id
)
INSERT INTO
    book_author
SELECT
    b.id
    , a.id
FROM
    books b
    , authors a;

只需对输出进行笛卡尔积,并将其用作第三次插入的输入

后插入触发器是你正在寻找的。谢谢你的回答。让我看看它是否有效。非常感谢。:)