엔터티 업데이트
Update Entity
작업은 테이블의 기존 엔터티를 업데이트합니다. 작업은 Update Entity
전체 엔터티를 대체하고 작업을 사용하여 속성을 제거할 수 있습니다.
요청
다음과 같이 요청을 생성할 Update Entity
수 있습니다. HTTPS를 사용하는 것이 좋습니다.
myaccount를 스토리지 계정의 이름으로 바꾸고 mytable
테이블 이름으로 바꿉니다.
myPartitionKey 및 myRowKey를 업데이트할 엔터티를 식별하는 파티션 키 및 행 키의 이름으로 바꿉니다.
메서드 | 요청 URI | HTTP 버전 |
---|---|---|
PUT |
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
업데이트할 엔터티의 주소는 요청 URI에서 다양한 양식을 사용할 수 있습니다. 자세한 내용은 OData 프로토콜 을 참조하세요.
에뮬레이트된 스토리지 서비스 URI
에뮬레이트된 스토리지 서비스에 대해 요청할 때 에뮬레이터 호스트 이름 및 Azure Table Storage 포트를 로 127.0.0.1:10002
지정한 다음 에뮬레이트된 스토리지 계정 이름을 지정합니다.
메서드 | 요청 URI | HTTP 버전 |
---|---|---|
PUT |
http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='myPartitionKey', RowKey='myRowKey') |
HTTP/1.1 |
스토리지 에뮬레이터의 Table Storage는 여러 가지 방법으로 Azure Table Storage와 다릅니다. 자세한 내용은 스토리지 에뮬레이터와 Azure Storage 서비스 간의 차이점을 참조하세요.
URI 매개 변수
요청 URI에 다음 추가 매개 변수를 지정할 수 있습니다.
매개 변수 | Description |
---|---|
timeout |
선택 사항입니다.
timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Table Storage 작업에 대한 시간 제한 설정을 참조하세요. |
요청 헤더
다음 표에서는 필수 요청 헤더와 선택적 요청 헤더에 대해 설명합니다.
요청 헤더 | Description |
---|---|
Authorization |
필수 요소. 권한 부여 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요. |
Date 또는 x-ms-date |
필수 요소. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요. |
x-ms-version |
선택 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요. |
Content-Type |
필수 요소. 페이로드의 콘텐츠 형식을 지정합니다. 가능한 값은 application/atom+xml 및 application/json 입니다.유효한 콘텐츠 형식에 대한 자세한 내용은 Table Storage 작업에 대한 페이로드 형식을 참조하세요. |
Content-Length |
필수 요소. 요청 본문의 길이입니다. |
If-Match |
필수 요소. 클라이언트는 낙관적 동시성을 위해 서비스에서 유지 관리하는 과 비교 ETag 하기 위해 요청에서 엔터티에 대한 을 지정할 ETag 수 있습니다. 업데이트 작업은 클라이언트에서 보낸 가 ETag 서버에서 유지 관리하는 값과 일치하는 경우에만 수행됩니다. 이 일치 항목은 엔터티가 클라이언트에서 검색된 이후 수정되지 않았음을 나타냅니다.무조건 업데이트하도록 하려면 If-Match 를 와일드카드 문자(*)로 설정합니다. |
x-ms-client-request-id |
선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1키비바이트(KiB) 문자 제한으로 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. 자세한 내용은 Azure Table Storage 모니터링을 참조하세요. |
요청 본문
작업은 Update Entity
JSON 또는 Atom 피드일 수 있는 엔터티 집합으로 OData
업데이트할 엔터티를 보냅니다. 자세한 내용은 엔터티 삽입 및 업데이트를 참조하세요.
참고
JSON은 권장 페이로드 형식이며 버전 2015-12-11 이상에서 지원되는 유일한 형식입니다.
샘플 요청
JSON(버전 2013-08-15 이상)
이 예에서는 JSON 피드에 대한 예제 요청 URI, 연결된 요청 헤더 및 요청 본문을 보여 줍니다.
Request Headers:
x-ms-version: 2015-12-11
Accept-Charset: UTF-8
Content-Type: application/json
If-Match: *
x-ms-date: Mon, 27 Jun 2016 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: ###
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
{
"Address":"Santa Clara",
"Age":23,
"AmountDue":200.23,
"CustomerCode@odata.type":"Edm.Guid",
"CustomerCode":"c9da6455-213d-42c9-9a79-3e9149a57833",
"CustomerSince@odata.type":"Edm.DateTime",
"CustomerSince":"2008-07-10T00:00:00",
"IsActive":false,
"NumberOfOrders@odata.type":"Edm.Int64",
"NumberOfOrders":"255",
"PartitionKey":"mypartitionkey",
"RowKey":"myrowkey"
}
Atom 피드(2015-12-11 이전 버전)
이 예제에서는 샘플 요청 URI, 연결된 요청 헤더 및 Atom 피드에 대한 요청 본문을 보여 줍니다.
Request URI:
https://myaccount.table.core.windows.net/mytable(PartitionKey='myPartitionKey',RowKey='myRowKey')
Request Headers:
x-ms-version: 2013-08-15
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
Content-Type: application/atom+xml
If-Match: *
x-ms-date: Wed, 20 Nov 2013 18:10:24 GMT
Authorization: SharedKeyLite myaccount:u0sWZKmjBD1B7LY/CwXWCnHdqK4B1P4z8hKy9SVW49o=
Content-Length: ###
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
Request Body:
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title />
<updated>2008-09-18T23:46:37.168836Z</updated>
<author>
<name />
</author>
<id>https://myaccount.table.core.windows.net/mytable(PartitionKey='mypartitionkey',RowKey='myrowkey')</id>
<content type="application/xml">
<m:properties>
<d:Address>Santa Clara</d:Address>
<d:Age m:type="Edm.Int32">23</d:Age>
<d:AmountDue m:type="Edm.Double">200.23</d:AmountDue>
<d:CustomerCode m:type="Edm.Guid">c9da6455-213d-42c9-9a79-3e9149a57833</d:CustomerCode>
<d:CustomerSince m:type="Edm.DateTime">2008-07-10T00:00:00Z</d:CustomerSince>
<d:IsActive m:type="Edm.Boolean">false</d:IsActive>
<d:NumOfOrders m:type="Edm.Int64">255</d:NumOfOrders>
<d:PartitionKey>mypartitionkey</d:PartitionKey>
<d:RowKey>myrowkey</d:RowKey>
</m:properties>
</content>
</entry>
응답
응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.
상태 코드
작업이 성공하면 상태 코드 204(콘텐츠 없음)이 반환됩니다. 상태 코드에 대한 자세한 내용은 상태 및 오류 코드 및Table Storage 오류 코드를 참조하세요.
응답 헤더
응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 표준 HTTP 헤더가 추가로 포함될 수도 있습니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 준수합니다.
응답 헤더 | Description |
---|---|
ETag |
ETag 엔터티에 대한 입니다. |
x-ms-request-id |
이 헤더는 만들어진 요청을 고유하게 식별하며 요청 문제 해결에 사용할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조하세요. |
x-ms-version |
요청을 실행하는 데 사용되는 Table Storage의 버전을 나타냅니다. 이 헤더는 2009-09-19 버전 이상에 대해 수행된 요청에 대해 반환됩니다. |
Date |
응답이 시작된 시간을 나타내는 UTC 날짜/시간 값입니다. 서비스에서 이 값을 생성합니다. |
x-ms-client-request-id |
이 헤더를 사용하여 요청 및 해당 응답 문제를 해결할 수 있습니다. 이 헤더의 값은 요청에 있는 경우 헤더 값 x-ms-client-request-id 과 같습니다. 이 값은 최대 1,024자 표시 ASCII 문자입니다. 헤더가 x-ms-client-request-id 요청에 없는 경우 이 헤더는 응답에 존재하지 않습니다. |
응답 본문
없음
샘플 응답
Response Status:
HTTP/1.1 204 No Content
Response Headers:
Connection: Keep-Alive
x-ms-request-id: 2c085f8f-11a4-4e1d-bd49-82c6bd87649d
Content-Length: 0
Cache-Control: no-cache
Date: Mon, 27 Jun 2016 18:12:54 GMT
ETag: W/"0x5B168C7B6E589D2"
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
권한 부여
계정 소유자는 이 작업을 수행할 수 있습니다. 또한 이 작업을 수행할 수 있는 권한이 있는 공유 액세스 서명이 있는 모든 사용자가 이 작업을 수행할 수 있습니다.
설명
엔터티를 업데이트할 때 업데이트 작업의 일부로 및 RowKey
시스템 속성을 지정 PartitionKey
해야 합니다.
엔터티는 ETag
업데이트 작업에 대한 기본 낙관적 동시성을 제공합니다. 값은 ETag
불투명하며 읽거나 의존해서는 안 됩니다. 업데이트 작업이 발생하기 전에 Table Storage는 엔터티의 현재 ETag
값이 헤더의 업데이트 요청에 If-Match
포함된 값과 동일한지 ETag
확인합니다. 값이 동일한 경우 Table Storage는 엔터티가 검색된 이후로 수정되지 않았음을 확인하고 업데이트 작업이 진행됩니다.
엔터티가 ETag
업데이트 요청으로 지정된 엔터티와 다른 경우 상태 코드 412(사전 조건 실패)로 인해 업데이트 작업이 실패합니다. 이 오류는 엔터티가 검색된 후 서버에서 엔터티가 변경되었음을 나타냅니다. 이 오류를 해결하려면 엔터티를 다시 검색하고 요청을 다시 실행하십시오.
무조건 업데이트하도록 하려면 요청에서 If-Match
헤더 값을 와일드카드(*) 문자로 설정합니다. 이 값을 작업에 전달하면 기본 낙관적 동시성이 재정의되고 값의 불일치 ETag
가 무시됩니다.
If-Match
버전 2011-08-18 이상의 요청에서 헤더가 누락된 경우 서비스는 엔터티 삽입 또는 바꾸기(upsert) 작업을 수행합니다. 2011-08-18 이전 버전에서 서비스는 상태 코드 400(잘못된 요청)을 반환합니다.
Table Storage는 속성에 대한 값을 유지 null
하지 않습니다. 값을 사용하여 속성을 null
지정하는 것은 요청에서 해당 속성을 생략하는 것과 같습니다.
참고
두 동작 중 하나를 활용하여 엔터티에서 속성을 제거할 수 있습니다.
속성을 명시적으로 입력하려면 Atom 피드의 속성 정의 내에서 특성을 설정 m:type
하여 적절한 OData
데이터 형식을 지정합니다. 속성 입력에 대한 자세한 내용은 엔터티 삽입 및 업데이트를 참조하세요.
HTTP PUT
요청을 승인하고 보낼 수 있는 모든 애플리케이션은 엔터티를 업데이트할 수 있습니다.
일괄 업데이트 작업을 수행하는 방법에 대한 자세한 내용은 엔터티 그룹 트랜잭션 수행을 참조하세요.
추가 정보
엔터티 병합
Azure Storage에 대한 요청 권한 부여
OData 데이터 서비스 버전 헤더 설정
상태 및 오류 코드
Table Storage 오류 코드