Php 在第三个表中插入数据,并在另外两个表中插入值
我在postgres数据库中有3个表。使用此代码创建: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
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;
只需对输出进行笛卡尔积,并将其用作第三次插入的输入 后插入触发器是你正在寻找的。谢谢你的回答。让我看看它是否有效。非常感谢。:)