首先,我对 pl/pgsql 真的很陌生。一个项目需要它。
我被这个(简化的)问题所困扰。
我的 db 模式具有与 m 的关系(作者、书籍、作者书籍)
现在我想要一个 pl/psgsql 函数 insert_book。(我知道所有作者肯定已经在作者表中,所以我只想传递他们的主键)。
这个功能大纲是我想到的。
create or replace function insert_book(book_to_insert book, authors integer[])
returns void as $$
begin
-- insert book into table books
-- for each author add an entry to author_books table
end;
$$ language plpgsql;
作为论据,我想通过类型书和编写它的作者的记录。但这究竟是如何工作的呢?我用谷歌搜索了很多,似乎无法弄清楚......
问题 1:功能大纲“正确”/有意义吗?
问题2:如何将记录簿插入表格簿?我是否必须检查书籍的所有领域(标题、isbn、出版商……)并将它们添加到 INSERT INTO 语句中,还是有一种“更智能”的方式?
问题 3:如何调用我的函数 insert_book?我在这里找到了这个例子(http://dbaspot.com/postgresql/206142-passing-record-function-argument-pl-pgsql.html),但这并没有真正帮助我。出于测试目的,我使用了 shell,但稍后我们将使用 Java 和 JDBC。
非常感谢您的帮助。