PostgreSQLの関数を使用して複数の行を挿入する方法

nahrun

PostgreSQLの関数を使用してテーブルに複数の行を挿入したい。

これは私のテーブルです

CREATE TABLE mahasiswa
(
  nim CHAR(10),
  nama VACHAR(40)
  CONSTRAINT pk_nim PRIMARY KEY (nim)
)
;

これが私が作成した関数です

CREATE FUNCTION insertdata(CHAR(10),varchar(40)) 
       RETURNS VOID AS 
       $$ 
         INSERT INTO mahasiswa VALUES ($1,$2); 
       $$ 
       LANGUAGE 'sql';

このような関数を呼び出すと

SELECT insertdata ('1234567890','Nahrun'),
('0987654321','Hartono');

1行だけが挿入されます。

一度に複数の行を挿入するように関数を変更するにはどうすればよいですか?

アーウィンブランドステッター

あなたが持っている機能は、むしろ次のようになります。

CREATE FUNCTION insertdata(varchar(10),varchar(40)) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   VALUES ($1,$2); 
$$ 
LANGUAGE sql STRICT;
  • 言語名を引用しないでください。それは識別子です。

  • 永続化されたステートメントを含むターゲットリストを常に提供します。そうしないと、後でテーブル定義を変更した場合、関数が予期しない方法で動作する可能性があります。

  • char(n)何をしているのかわからない場合絶対に使用しないでください。私はただ使用しますtext

複数の行挿入するには、複合型の配列または同じ数の要素持つ2つの配列を使用して、並列にネストを解除します。後者のデモンストレーション:

CREATE FUNCTION insertdata(_arr1 text[], _arr2 text[]) 
  RETURNS VOID AS 
$$ 
   INSERT INTO mahasiswa(col_name1, col_name2)
   SELECT unnest(_arr1), unnest(_arr2);
$$ 
LANGUAGE sql STRICT;

コール:

SELECT insertdata ('{1234567890,0987654321}', '{Nahrun,Hartono}');

間違いを防ぐために、plpgsql関数を使用して、両方の配列で要素の数が同じであることを確認したいと思います。使用array_length(arr1, 1)...

Postgres9.4以降..。

...複数の配列を並行して受け入れるunnestの新しいバリアントを導入しました-上記のハックの癖なしで(デフォルトでは決してCROSS JOIN

   INSERT INTO mahasiswa(col_name1, col_name2)
   SELECT * FROM unnest(_arr1, _arr2);  -- must be in FROM list

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CTE(WITH)を使用してpostgresqlに複数の行を挿入する方法

分類Dev

PQputCopyDataを使用して複数の行を挿入する方法

分類Dev

JdbcTemplateを使用して複数の行を挿入する

分類Dev

jQueryを使用して複数のHTML要素を挿入する方法

分類Dev

PHPPDOを使用してMySQLに複数の行を持つ複数の配列を挿入する方法

分類Dev

InversifyJS を使用して関数を挿入する最良の方法

分類Dev

複数の行を挿入する方法

分類Dev

phpを使用して複数のデータ行の挿入を実行する

分類Dev

foreachを使用して複数の挿入と削除を行う方法

分類Dev

PHPPDOを使用して複数の行を挿入します

分類Dev

executeを使用して複数の行を挿入します

分類Dev

Avroを使用してBigQueryに複数の列を持つ行を挿入する

分類Dev

入力を使用して配列値から複数の行を挿入する方法

分類Dev

単一の実行を使用してテーブルへの複数の挿入を処理する方法

分類Dev

Java:PreparedStatementを使用してMySQLに複数の行を挿入する

分類Dev

phpを使用して複数の行にフォーム値を挿入する

分類Dev

サブクエリを使用してMySQLに複数の行を挿入する

分類Dev

トリガーを使用して SQlite に複数の行を挿入する

分類Dev

結合を使用してテーブルに複数の行を挿入する

分類Dev

JDBIを使用して単一のINSERTで複数の行を挿入する方法は?

分類Dev

Eloquent / Fluentを使用して単一のクエリから複数の行を挿入する方法

分類Dev

MysqlとPHPを使用して同じ名前の複数の行を挿入する方法

分類Dev

c#を使用してmysqlに複数の行を挿入する最良の方法は?

分類Dev

PHPを使用してデータベースのjson配列に複数の行を挿入する方法

分類Dev

laravelを使用して複数の配列をmysqlに挿入する方法

分類Dev

SQLAlchemyでJSONを使用して複数のレコードを挿入する方法

分類Dev

複数のforeachを使用してMYSQLに正しく挿入する方法

分類Dev

Railsを使用して複数行の文字列をcoffeescript / jquery値に挿入する方法

分類Dev

Postgresqlは複数の行で選択を挿入します

Related 関連記事

  1. 1

    CTE(WITH)を使用してpostgresqlに複数の行を挿入する方法

  2. 2

    PQputCopyDataを使用して複数の行を挿入する方法

  3. 3

    JdbcTemplateを使用して複数の行を挿入する

  4. 4

    jQueryを使用して複数のHTML要素を挿入する方法

  5. 5

    PHPPDOを使用してMySQLに複数の行を持つ複数の配列を挿入する方法

  6. 6

    InversifyJS を使用して関数を挿入する最良の方法

  7. 7

    複数の行を挿入する方法

  8. 8

    phpを使用して複数のデータ行の挿入を実行する

  9. 9

    foreachを使用して複数の挿入と削除を行う方法

  10. 10

    PHPPDOを使用して複数の行を挿入します

  11. 11

    executeを使用して複数の行を挿入します

  12. 12

    Avroを使用してBigQueryに複数の列を持つ行を挿入する

  13. 13

    入力を使用して配列値から複数の行を挿入する方法

  14. 14

    単一の実行を使用してテーブルへの複数の挿入を処理する方法

  15. 15

    Java:PreparedStatementを使用してMySQLに複数の行を挿入する

  16. 16

    phpを使用して複数の行にフォーム値を挿入する

  17. 17

    サブクエリを使用してMySQLに複数の行を挿入する

  18. 18

    トリガーを使用して SQlite に複数の行を挿入する

  19. 19

    結合を使用してテーブルに複数の行を挿入する

  20. 20

    JDBIを使用して単一のINSERTで複数の行を挿入する方法は?

  21. 21

    Eloquent / Fluentを使用して単一のクエリから複数の行を挿入する方法

  22. 22

    MysqlとPHPを使用して同じ名前の複数の行を挿入する方法

  23. 23

    c#を使用してmysqlに複数の行を挿入する最良の方法は?

  24. 24

    PHPを使用してデータベースのjson配列に複数の行を挿入する方法

  25. 25

    laravelを使用して複数の配列をmysqlに挿入する方法

  26. 26

    SQLAlchemyでJSONを使用して複数のレコードを挿入する方法

  27. 27

    複数のforeachを使用してMYSQLに正しく挿入する方法

  28. 28

    Railsを使用して複数行の文字列をcoffeescript / jquery値に挿入する方法

  29. 29

    Postgresqlは複数の行で選択を挿入します

ホットタグ

アーカイブ