---
schema_version: "1"
id: 8608056845cf52fd55c264952dd657d547927c4e60db60e64d89056c12ab35d0
title: データベースのデータの挿入、更新、および削除の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/db-connector/1.14/database-insert-update-delete.md
canonical_url: https://docs.mulesoft.com/jp/db-connector/1.14/database-insert-update-delete
source_site: docs.mulesoft.com
content_type: documentation
content_hash: fdd05131117bb8cc4d87c42b2d515c269dc9727a07076ff5c6b465372a948942
description: MuleSoft Documentation Site
release: "1.14"
latest: true
---
# データベースのデータの挿入、更新、および削除の例

データベース用 Anypoint Connector (Database Connector) では、データベースのデータを管理できるようにする ​**Insert**​、​**Update**​、​**Delete**​ 操作がサポートされています。

次の例では、​`electronic`​ という名前のテーブルが含まれる ​`Products`​ という名前のデータベーススキーマのデータを挿入、更新、削除します。このテーブルには、​`id`​、​`name`​、​`description`​、​`price`​、​`discount`​ という列が含まれます。

次の SQL ステートメントでは、このテーブルを作成します。

```sql
CREATE TABLE electronic(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    description VARCHAR(255),
    price SMALLINT,
    discount TINYINT
)
```

## [](#studio-で-insert-操作を設定する)Studio で Insert 操作を設定する

テーブル ​`electronic`​ がすでに作成されていて、​`dbConfig`​ という名前の Database Connector 接続設定がある場合、テーブルに新しいレコードを挿入する ​**Insert**​ 操作を設定できます。

1. Studio のフローで、​**\[Insert\]**​ 操作を選択します。
2. コネクタ設定画面で、実行する SQL クエリを ​**\[SQL Query Text (SQL クエリテキスト)\]**​ 項目に設定します。例:

```XML
    INSERT INTO electronic(name, description, price, discount)
    VALUES ('Coffee Machine', 'Model: XYZ99. Uses small size capsules.', 120, 5)
```

`id`​ パラメーターは、データベースによって自動的に生成される自動増分キーであるため、クエリに渡されません。

![Insert 操作の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-insert-example-1.png)

**設定 XML**​ エディターでは、​`<db:insert>`​ 設定は次のように記述されます。

```xml
<db:insert config-ref="dbConfig">
  <db:sql>
    INSERT INTO electronic(name, description, price, discount)
    VALUES ('Coffee Machine', 'Model: XYZ99. Uses small size capsules.', 120, 5)
  </db:sql>
</db:insert>
```

### [](#insert-操作の-input-parameters-入力パラメーター-項目を設定する)Insert 操作の \[Input Parameters (入力パラメーター)\] 項目を設定する

入力パラメーターの利点を得るには、次のように同等の SQL クエリを構築します。

1. Studio のフローで、​**\[Insert\]**​ 操作を選択します。
2. コネクタ設定画面で、実行する SQL クエリを ​**\[SQL Query Text (SQL クエリテキスト)\]**​ 項目に設定します。例:

```xml
INSERT INTO electronic(name, description, price, discount)
VALUES (:name, :description, :price, :discount)
```

1. **\[Input Parameters (入力パラメーター)\]**​ 項目で、次のパラメーターを設定します。

```xml
{
    name: 'Coffee Machine',
    description: 'Model:XYZ99. Uses small size capsules.',
    price: 120,
    discount: 5
}
```

![「Input Parameter (入力パラメーター)」 項目の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-insert-example-2.png)

**設定 XML**​ エディターでは、​`<db:input-parameters>`​ 設定は次のように記述されます。

```xml
<db:insert config-ref="dbConfig">
    <db:sql>
        INSERT INTO electronic(name, description, price, discount)
        VALUES (:name, :description, :price, :discount)
    </db:sql>
    <db:input-parameters>#[{
        name: 'Coffee Machine',
        description: 'Model:XYZ99. Uses small size capsules.',
        price: 120,
        discount: 5}]
    </db:input-parameters>
</db:insert>
```

### [](#insert-操作の-auto-generate-keys-自動生成キー-項目を設定する)Insert 操作の \[Auto Generate Keys (自動生成キー)\] 項目を設定する

**Insert**​ 操作は、2 つの項目 (クエリの影響を受けた行数を示す整数 ​`affectedRows`​ と、自動生成されたキーが含まれるマップ ​`generatedKeys`​) が含まれる ​`Statement Result`​ オブジェクトを出力します。

次の例の出力では、行は正常にテーブルに追加されているが、マップ ​`generatedKeys`​ が空であることが示されています。マップが空になるのは、オーバーヘッドを回避するためにこの情報がデフォルトで無効になっているためです。

```json
{
  "affectedRows": 1,
  "generatedKeys": {

  }
}
```

情報をアクティブ化してキーを生成する手順は、次のとおりです。

1. Studio のフローで、​**\[Insert\]**​ 操作を選択します。
2. **\[Advanced (詳細)\]**​ タブで ​**\[Auto generate keys (自動生成キー)\]**​ 項目を ​**\[True\]**​ に設定します。

![「Input Parameter (入力パラメーター)」 項目の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-insert-example-3.png)

**設定 XML**​ エディターでは、​`<autoGenerateKeys>`​ 設定は次のように記述されます。

```xml
<db:insert config-ref="dbConfig" autoGenerateKeys="true">
...
</db:insert>
```

ステートメントで影響を受けた行ごとに複数のキーが生成される場合、目的の列名が含まれるリストを設定して、返される列を指定できます。例:

1. Studio のフローで、​**\[Insert\]**​ 操作を選択します。
2. **\[Advanced (詳細)\]**​ タブで、​**\[Auto generate column names (列名を自動生成)\]**​ 項目を \[​`Expression or Bean reference`​ (式または bean 参照)\] に設定して、項目を 1 つの文字列要素が含まれる DataWeave リストに設定します。
3. \[expression (式)\] 項目を ​`['id']`​ に設定して、​`id`​ 列のみが返されるようにします。

![「Auto generate column names (列名を自動生成)」 項目の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-insert-example-4.png)

**設定 XML**​ エディターでは、​`<autoGeneratedKeysColumnNames>`​ 設定は次のように記述されます。

```xml
<db:insert config-ref="dbConfig" autoGenerateKeys="true" autoGeneratedKeysColumnNames="#[['id']]">
    ...
</db:insert>
```

## [](#studio-で-update-操作を設定する)Studio で Update 操作を設定する

`electronic`​ テーブルが事前に定義されている場合、テーブルのデータを更新する (たとえば、価格値が 100 を越えているすべての項目の割引を 10 % に設定する) には、次のように ​**Update**​ 操作を設定します。

1. Studio のフローで、​**\[Update\]**​ 操作を選択します。
2. コネクタ設定画面で、​`"UPDATE electronic SET discount = :discount WHERE price > :price"`​ のように、実行する SQL クエリを ​**\[SQL Query Text (SQL クエリテキスト)\]**​ 項目に設定します。
3. **\[Input parameters (入力パラメーター)\]**​ 項目を次のパラメーターに設定します。

```xml
{
      discount: 10,
      price: 100
}
```

![Update 操作の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-update-example-1.png)

**設定 XML**​ エディターでは、​`<db:update>`​ 設定は次のように記述されます。

```xml
<db:update doc:name="Update">
			<db:sql ><![CDATA["UPDATE electronic SET discount = :discount WHERE price > :price"]]></db:sql>
			<db:input-parameters ><![CDATA[#[{
        discount: 10,
        price: 100
    }]]]></db:input-parameters>
		</db:update>
```

`<![CDATA[…​]]>`​ ラッパーにより、クエリで ​`>`​ や ​`"`​ などの特殊文字を使用できます。 ラッパーがない場合、これらの文字の XML でエスケープされたバージョン (​`&gt;`​ や ​`&quot;`​ など) を使用する必要があります。

## [](#studio-で-delete-操作を設定する)Studio で Delete 操作を設定する

`electronic`​ テーブルが事前に定義されている場合、​`id: 1`​ のレコードを削除するには、次のように ​**Delete**​ 操作を設定します。

1. Studio のフローで、​**\[Update\]**​ 操作を選択します。
2. コネクタ設定画面で、​`DELETE FROM electronic WHERE id = :id`​ のように、実行する SQL クエリを ​**\[SQL Query Text (SQL クエリテキスト)\]**​ 項目に設定します。
3. **\[Input parameters (入力パラメーター)\]**​ 項目を ​`{id: 1}`​ に設定します。

![Studio での Update 操作の設定](/mulesoft/current/ja-jp/db-connector/1.14/_images/database-delete-example-1.png)

**設定 XML**​ エディターでは、​`<db:delete>`​ 設定は次のように記述されます。

```xml
<db:delete config-ref="dbConfig">
    <db:sql>DELETE FROM electronic WHERE id = :id</db:sql>
    <db:input-parameters>#[{
        id: 1
    }]</db:input-parameters>
</db:delete>
```

## [](#レコード挿入-mule-アプリケーションの例)レコード挿入 Mule アプリケーションの例

次の例は、データベースに個人のレコードを作成するように ​**Insert**​ 操作を設定する方法を示しています。

1. Studio で、HTTP ​**Listener**​ ソースを Studio キャンバスにドラッグします。
2. **\[Path (パス)\]**​ を ​`/person`​ に設定します。
3. **\[Insert\]**​ 操作を ​**\[Listener\]**​ ソースの横にドラッグします。
4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックし、グローバル要素設定項目にアクセスします。
5. **\[SQL Query Text (SQL クエリテキスト)\]**​ ボックスで、次の SQL テキストを宣言します。
    
    ```xml
    insert into person (id, name, photo, dob)
    values (:ID,:NAME,:PHOTO,:DOB);
    ```

1. **\[Input Parameters (入力パラメーター)\]**​ 項目で、作成する個人レコードのマップのリストを指定します。これには、パラメーター名がキーとして、値がパラメーターとして含まれます。また、すべてのリスト項目は挿入する行を表します。
    
    ```xml
    {'ID' : message.payload.parts['id'].content ,
    'NAME': message.payload.parts['name'].content,
    'PHOTO' : message.payload.parts['photo'].content,
    'DOB' : message.payload.parts['dob'].content}
    ```
2. **\[Set Payload\]**​ コンポーネントを ​**\[Insert\]**​ 操作の横にドラッグ横にます。
3. **\[Value (値)\]**​ を ​`Person Created`​ (個人作成済み) に設定します。
4. Mule アプリケーションを保存して実行します。

**設定 XML**​ エディターでは、設定は次のように記述されます。

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<db:config name="Database_Config" doc:name="Database Config" >
		<db:my-sql-connection host="localhost" port="3306" user="root" password="root" database="dev" />
	</db:config>
	<flow name="db-connector-testFlow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/person" allowedMethods="POST"/>
		<db:insert doc:name="Insert" config-ref="Database_Config">
			<db:sql ><![CDATA[insert into person (id, name, photo, dob)
values (:ID,:NAME,:PHOTO,:DOB);]]></db:sql>
			<db:input-parameters ><![CDATA[#[{'ID' : message.payload.parts['id'].content ,
'NAME': message.payload.parts['name'].content,
'PHOTO' : message.payload.parts['photo'].content,
'DOB' : message.payload.parts['dob'].content}]]]></db:input-parameters>
		</db:insert>
		<set-payload value="Person Created" doc:name="Set Payload" />
	</flow>
</mule>
```

## [](#関連情報)関連情報

- [Database Connector の例](https://docs.mulesoft.com/jp/db-connector/1.14/database-connector-examples)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)