

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon QLDB의 UPDATE 명령
<a name="ql-reference.update"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Amazon QLDB에서는 `UPDATE` 명령을 사용하여 문서 내 하나 이상의 요소의 값을 수정합니다. 요소가 없으면 해당 요소가 삽입됩니다.

[FROM (INSERT, REMOVE, 또는 SET)](ql-reference.from.md) 명령문처럼 이 명령을 사용하여 문서 내에 특정 요소를 명시적으로 삽입하고 제거할 수도 있습니다.

**참고**  
특정 테이블에서 이 PartiQL 명령을 실행하기 위한 액세스를 제어하는 방법을 알아보려면 [Amazon QLDB에서 표준 권한 모드로 시작하기](getting-started-standard-mode.md) 섹션을 참조하세요.

**Topics**
+ [구문](#ql-reference.update.syntax)
+ [파라미터](#ql-reference.update.parameters)
+ [반환 값](#ql-reference.update.return)
+ [예시](#ql-reference.update.examples)
+ [드라이버를 사용하여 프로그래밍 방식으로 실행](#ql-reference.update.driver)

## 구문
<a name="ql-reference.update.syntax"></a>

**UPDATE-SET**

문서 내 하나 이상의 요소를 업데이트합니다. 요소가 없으면 해당 요소가 삽입됩니다. 이는 [FROM-SET](ql-reference.from.md) 문과 의미상 동일합니다.

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
SET element = data [, element = data, ... ]
[ WHERE condition ]
```

**UPDATE-INSERT**

기존 문서에 새 요소를 삽입합니다. 새 최상위 문서를 테이블에 삽입하려면 [INSERT](ql-reference.insert.md)를 사용해야 합니다.

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
INSERT INTO element VALUE data [ AT key_name ]
[ WHERE condition ]
```

**UPDATE-REMOVE**

문서 내의 기존 요소를 제거하거나 최상위 문서 전체를 제거합니다. 후자는 의미상 기존 [DELETE](ql-reference.delete.md) 구문과 동일합니다.

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
REMOVE element
[ WHERE condition ]
```

## 파라미터
<a name="ql-reference.update.parameters"></a>

***table\$1name***  
수정할 데이터가 포함된 사용자 테이블의 이름입니다. DML 문은 기본 [사용자 뷰](working.userdata.md)에서만 지원됩니다. 각 명령문은 단일 테이블에서만 실행할 수 있습니다.

**AS *table\$1alias***  
(선택 사항)업데이트할 테이블에 속하는 사용자 정의 별칭입니다. `AS` 키워드는 선택 사항입니다.

**BY *id\$1alias***  
(선택 사항)결과 집합에 있는 각 문서의 `id` 메타데이터 필드에 바인딩되는 사용자 정의 별칭입니다. `BY` 키워드를 사용하여 `UPDATE` 절에서 별칭을 선언해야 합니다. 이는 기본 사용자 뷰를 쿼리하면서 [문서 ID](working.metadata.md)를 기준으로 필터링하려는 경우에 유용합니다. 자세한 내용은 [BY 절을 사용하여 문서 ID 쿼리하기](working.metadata.by-clause.md)을 참조하세요.

***element***  
생성하거나 수정할 문서 요소입니다.

***data***  
요소의 새 값입니다.

**AT *key\$1name***  
수정할 문서에 추가할 키 이름입니다. 키 이름과 함께 해당하는 `VALUE`을 지정해야 합니다. 이는 문서 내 특정 위치에 새 값 `AT`을 삽입하는 데 필요합니다.

**WHERE *condition***  
수정할 문서의 선택 기준입니다.

**참고**  
`WHERE` 절을 생략하면 테이블의 모든 문서가 수정됩니다.

## 반환 값
<a name="ql-reference.update.return"></a>

`documentId` - 업데이트한 각 문서의 고유 ID입니다.

## 예시
<a name="ql-reference.update.examples"></a>

문서의 필드를 업데이트합니다. 필드가 존재하지 않는 경우 해당 필드가 삽입됩니다.

```
UPDATE Person AS p
SET p.LicenseNumber = 'HOLLOR123ZZ'
WHERE p.GovId = '111-22-3333'
```

시스템에서 할당한 문서 `id` 메타데이터 필드를 기준으로 필터링합니다.

```
UPDATE Person AS p BY pid
SET p.LicenseNumber = 'HOLLOR123ZZ'
WHERE pid = 'documentId'
```

문서 전체를 덮어씁니다.

```
UPDATE Person AS p
SET p = {
    'FirstName' : 'Rosemarie',
    'LastName' : 'Holloway',
    'DOB' : `1977-06-18T`,
    'GovId' : '111-22-3333',
    'GovIdType' : 'Driver License',
    'Address' : '4637 Melrose Street, Ellensburg, WA, 98926'
}
WHERE p.GovId = '111-22-3333'
```

문서 내 `Owners.SecondaryOwners` 목록에 있는 *첫 번째* 요소의 `PersonId` 필드를 수정합니다.

```
UPDATE VehicleRegistration AS r
SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
WHERE r.VIN = '1N4AL11D75C109151'
```

`{'Mileage':26500}`를 `Vehicle` 테이블의 문서 내에 최상위 이름-값 쌍으로 삽입합니다.

```
UPDATE Vehicle AS v
INSERT INTO v VALUE 26500 AT 'Mileage'
WHERE v.VIN = '1N4AL11D75C109151'
```

`{'PersonId':'abc123'}`를 `VehicleRegistration` 테이블의 문서 `Owners.SecondaryOwners` 필드에 이름-값 쌍으로 추가합니다. 이 명령문이 유효하려면 `Owners.SecondaryOwners`이 이미 존재하고 목록 데이터 유형이어야 합니다. 그렇지 않으면 `INSERT INTO` 절에 `AT` 키워드가 필요합니다.

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
WHERE r.VIN = '1N4AL11D75C109151'
```

`{'PersonId':'abc123'}`를 문서 내 기존 `Owners.SecondaryOwners` 목록의 *첫 번째* 요소로 삽입합니다.

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
WHERE r.VIN = '1N4AL11D75C109151'
```

문서 내 기존 `Owners.SecondaryOwners` 목록에 여러 개의 이름-값 쌍을 추가합니다.

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
WHERE r.VIN = '1N4AL11D75C109151'
```

문서 내 기존 요소를 제거합니다.

```
UPDATE Person AS p
REMOVE p.Address
WHERE p.GovId = '111-22-3333'
```

테이블에서 전체 문서를 제거합니다.

```
UPDATE Person AS p
REMOVE p
WHERE p.GovId = '111-22-3333'
```

`VehicleRegistration` 테이블의 문서 내 `Owners.SecondaryOwners` 목록의 *첫 번째* 요소를 제거합니다.

```
UPDATE VehicleRegistration AS r
REMOVE r.Owners.SecondaryOwners[0]
WHERE r.VIN = '1N4AL11D75C109151'
```

## 드라이버를 사용하여 프로그래밍 방식으로 실행
<a name="ql-reference.update.driver"></a>

QLDB 드라이버를 사용하여 이 명령문을 프로그래밍 방식으로 실행하는 방법을 알아보려면 *드라이버 시작하기*에서 다음 자습서를 참조하세요.
+ Java: [빠른 시작 자습서](driver-quickstart-java.md) \$1 [Cookbook 참조](driver-cookbook-java.md)
+ .NET: [빠른 시작 자습서](driver-quickstart-dotnet.md) \$1 [Cookbook 참조](driver-cookbook-dotnet.md)
+ Go: [빠른 시작 자습서](driver-quickstart-golang.md) \$1 [Cookbook 참조](driver-cookbook-golang.md)
+ Node.js: [빠른 시작 자습서](driver-quickstart-nodejs.md) \$1 [Cookbook 참조](driver-cookbook-nodejs.md)
+ Python: [빠른 시작 자습서](driver-quickstart-python.md) \$1 [Cookbook 참조](driver-cookbook-python.md)