DynamoDB의 PartiQL update 문
UPDATE
문을 사용하면 Amazon DynamoDB 테이블에서 항목 내의 특성 하나 이상의 값을 수정할 수 있습니다.
참고
한 번에 하나의 항목만 업데이트할 수 있어서, 여러 항목을 업데이트하는 단일 DynamoDB PartiQL 문을 실행할 수는 없습니다. 여러 항목을 업데이트하는 방법은 DynamoDB용 PartiQL에서 트랜잭션 수행 또는 DynamoDB용 PartiQL에서 일괄 작업 실행 단원을 참조하세요.
구문
UPDATE
table
[SET | REMOVE]path
[=data
] […] WHEREcondition
[RETURNINGreturnvalues
] <returnvalues> ::= [ALL OLD | MODIFIED OLD | ALL NEW | MODIFIED NEW] *
파라미터
table
-
(필수) 수정할 데이터가 포함된 테이블입니다.
경로
-
(필수) 생성하거나 수정할 속성 이름 또는 문서 경로입니다.
data
-
(필수) 속성 값 또는 작업의 결과입니다.
SET과 함께 사용할 수 있는 작업은 다음과 같습니다.
-
LIST_APPEND: 목록 형식에 값을 추가합니다.
-
SET_ADD: 숫자 또는 문자열 집합에 값을 추가합니다.
-
SET_DELETE: 숫자 또는 문자열 집합에서 값을 제거합니다.
-
condition
-
(필수) 수정할 항목의 선택 기준입니다. 이 조건은 단일 기본 키 값으로 확인되어야 합니다.
returnvalues
-
(선택 사항) 항목 속성이 업데이트되기 전이나 후에 표시되는 해당 속성을 가져오려면
returnvalues
를 사용합니다. 유효한 값은 다음과 같습니다.-
ALL OLD *
- 업데이트 작업 전에 표시된 항목 속성을 모두 반환합니다. -
MODIFIED OLD *
- 업데이트 작업 전에 표시된 업데이트된 속성만 반환합니다. -
ALL NEW *
- 업데이트 작업 후에 표시되는 항목 속성을 모두 반환합니다. -
MODIFIED NEW *
-UpdateItem
작업 후에 표시되는 업데이트된 속성만 반환합니다.
-
반환 값
이 문은 returnvalues
파라미터를 지정하지 않는 경우 값을 반환하지 않습니다.
참고
DynamoDB 테이블의 모든 항목에 대해 UPDATE 문의 WHERE 절이 true로 평가되지 않으면 ConditionalCheckFailedException
이 반환됩니다.
예
기존 항목의 속성 값을 업데이트합니다. 속성이 없으면 새로 생성됩니다.
다음 쿼리는 숫자 형식의 속성(AwardsWon
)과 맵 형식의 속성(AwardDetail
)을 추가하여 "Music"
테이블에서 항목을 업데이트합니다.
UPDATE "Music" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
RETURNING ALL OLD *
를 추가하여 Update
작업 전에 있던 속성을 반환할 수 있습니다.
UPDATE "Music" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks' RETURNING ALL OLD *
그러면 다음이 반환됩니다.
{ "Items": [ { "Artist": { "S": "Acme Band" }, "SongTitle": { "S": "PartiQL Rocks" } } ] }
RETURNING ALL NEW *
를 추가하여 Update
작업 후에 있던 속성을 반환할 수 있습니다.
UPDATE "Music" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks' RETURNING ALL NEW *
그러면 다음이 반환됩니다.
{ "Items": [ { "AwardDetail": { "M": { "Grammys": { "L": [ { "N": "2020" }, { "N": "2018" } ] } } }, "AwardsWon": { "N": "1" } } ] }
다음 쿼리는 AwardDetail.Grammys
목록에 추가하여 "Music"
테이블에서 항목을 업데이트합니다.
UPDATE "Music" SET AwardDetail.Grammys =list_append(AwardDetail.Grammys,[2016]) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
다음 쿼리는 AwardDetail.Grammys
목록에서 제거하여 "Music"
테이블에서 항목을 업데이트합니다.
UPDATE "Music" REMOVE AwardDetail.Grammys[2] WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
다음 쿼리는 AwardDetail
맵에 "Music"
을 추가하여 BillBoard
테이블에서 항목을 업데이트합니다.
UPDATE "Music" SET AwardDetail.BillBoard=[2020] WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
다음 쿼리는 문자열 집합 속성 BandMembers
를 추가하여 "Music"
테이블에서 항목을 업데이트합니다.
UPDATE "Music" SET BandMembers =<<'member1', 'member2'>> WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
다음 쿼리는 문자열 집합 BandMembers
에 newbandmember
를 추가하여 "Music"
테이블에서 항목을 업데이트합니다.
UPDATE "Music" SET BandMembers =set_add(BandMembers, <<'newbandmember'>>) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'