まず、pl/pgsql は初めてです。プロジェクトに必要です。
私はこの(単純化された)問題に悩まされています。
私の db スキーマには対 m 関係 (author、books、author_books) があります。
ここで、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;
引数として、タイプ book のレコードとそれを書いた著者を渡すことを考えました。しかし、これはどのように機能しますか?私はかなりグーグルで調べましたが、これを理解できないようです...
質問 1 : 関数の概要は「正しい」か、または理にかなっていますか?
質問 2 : レコードブックをテーブルブックに挿入する方法は? 本のすべてのフィールド (タイトル、ISBN、出版社など) を調べて、それらを INSERT INTO ステートメントに追加する必要がありますか、または「よりスマートな」方法はありますか?
質問 3 : 関数 insert_book をどのように呼び出すのですか? ここでこの例を見つけました (http://dbaspot.com/postgresql/206142-passing-record-function-argument-pl-pgsql.html) が、実際には役に立ちません。テスト目的でシェルを使用していますが、後で Java と JDBC を使用します。
ご助力ありがとうございます。