SQL 언어는 데이터 수정을 위한 UPDATE
문을 제공합니다. Amazon DynamoDB는 비슷한 태스크를 위해 UpdateItem
작업을 사용합니다.
SQL에서 테이블의 데이터 수정
SQL에서는 UPDATE
문을 사용하여 하나 이상의 행을 수정합니다. SET
절은 하나 이상의 열의 새로운 값을 지정하고, WHERE
절은 어떤 행이 수정되는지 결정합니다. 다음은 예입니다.
UPDATE Music
SET RecordLabel = 'Global Records'
WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';
WHERE
절과 일치하는 행이 없으면 UPDATE
문은 영향을 미치지 않습니다.
DynamoDB에서 테이블의 데이터 수정
DynamoDB에서는 클래식 API나 PartiQL(SQL 호환 쿼리 언어)을 사용하여 단일 항목을 수정할 수 있습니다. 복수의 항목을 수정하려면 복수의 작업을 사용해야 합니다.
DynamoDB API에서는 UpdateItem
작업을 사용하여 단일 항목을 수정합니다.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ExpressionAttributeValues: { ":label": "Global Records" } }
수정할 항목의 Key
속성과 속성 값을 지정하는 UpdateExpression
을 지정해야 합니다. UpdateItem
은 'upsert' 작업처럼 동작합니다. 즉 항목이 테이블에 존재하면 업데이트되지만 그렇지 않으면 새 항목이 추가(삽입)됩니다.
UpdateItem
은 조건부 쓰기를 지원하는데, 특정 ConditionExpression
이 true로 평가되는 경우에 한해 작업이 성공합니다. 예를 들어, 다음 UpdateItem
작업은 노래의 가격이 2.00 이상이 아니면 업데이트를 수행하지 않습니다.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ConditionExpression: "Price >= :p", ExpressionAttributeValues: { ":label": "Global Records", ":p": 2.00 } }
UpdateItem
은 원자성 카운터 즉, 증가하거나 감소할 수 있는 Number
형식의 속성도 지원합니다. 원자성 카운터는 여러 가지 면에서 SQL 데이터베이스의 시퀀스 발생기, 자격 증명 열 또는 자동 증분 필드와 유사합니다.
다음은 UpdateItem
작업을 통해 새 속성(Plays)을 초기화하여 노래가 재생된 횟수를 추적하는 예제입니다.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = :val", ExpressionAttributeValues: { ":val": 0 }, ReturnValues: "UPDATED_NEW" }
ReturnValues
파라미터는 업데이트된 속성의 새 값을 반환하는 UPDATED_NEW
로 설정됩니다. 이 경우에는 0을 반환합니다.
누군가가 이 노래를 재생할 때마다 다음 UpdateItem
작업을 사용하여 Plays를 1씩 증가시킬 수 있습니다.
{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = Plays + :incr", ExpressionAttributeValues: { ":incr": 1 }, ReturnValues: "UPDATED_NEW" }