UPDATE
UPDATE 문을 사용하여 행을 업데이트합니다.
update_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] update_parameter ::= ( TIMESTAMP | TTL ) ( integer | bind_marker ) assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_name simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term
예를 들어 :
UPDATE NerdMovies USING TTL 400 SET director = 'Joss Whedon', main_actor = 'Nathan Fillion', year = 2005 WHERE movie = 'Serenity'; UPDATE UserActions SET total = total + 2 WHERE user = B70DE1D0-9908-4AE3-BE34-5573E5B09F14 AND action = 'click';
UPDATE 문은 테이블의 주어진 행에 대해 하나 이상의 칼럼을 씁니다.
where_clause는 업데이트 할 행을 선택하는 데 사용되며 반드시 PRIMARY KEY를 포함해야합니다.
PRIMARY KEY가 아닌 컬럼은 SET 키워드를 사용하여 업데이트됩니다.
SQL과 달리 UPDATE는 기본적으로 행의 존재 여부를 확인하지 않습니다 (IF를 사용할 경우 제외):
전에 존재하지 않으면 행이 작성되고, 그렇지 않으면 갱신됩니다.
또한 생성 또는 업데이트가 발생했는지 여부를 알 수있는 방법이 없습니다.
그러나 IF를 통해 일부 열에 대한 조건을 사용할 수 있고, 이 경우 조건이 충족되지 않으면 행이 업데이트되지 않습니다.
그러나 IF 를 사용하면 무시할 수없는 성능 비용 (내부적으로는 Paxos가 사용됨)이 발생하므로 주의해서 사용해야합니다.
UPDATE 문을 사용할 때 동일한 파티션 키 내의 모든 업데이트는 독립적으로 개별적으로 적용됩니다.
- c = c + 3 은 카운터를 증가 / 감소시키는 데 사용됩니다.
'='기호 다음의 컬럼 이름은 '='기호 앞의 컬럼 이름과 동일해야합니다.
증가 / 감소는 카운터에서만 허용되며 카운터에서 허용되는 유일한 업데이트 작업입니다.
- id = id +
- id.field = 3은 고정되지 않은 사용자 정의 유형의 필드 값을 설정하기위한 것입니다.
Update parameters
TIMESTAMP에 대한 UPDATE, INSERT (및 DELETE 및 BATCH) 문은 다음 매개 변수를 지원합니다:
- TIMESTAMP : 작업의 타임 스탬프를 설정합니다. 지정되지 않으면 코디네이터는 명령문 실행 시작시 현재 시간 (마이크로 초)을 timestamp로 사용합니다.
- TTL : 삽입 된 값에 대한 선택적 TTL (Time To Live)을 초 단위로 지정합니다.
설정하면 삽입 된 값이 지정된 시간 후에 데이터베이스에서 자동으로 제거됩니다.
TTL은 삽입 된 값과 관련이 있으며 열 자체는 관련이 없습니다.
이는 해당 열의 다음 업데이트가 TTL을 재설정한다는 것을 의미합니다 (해당 업데이트에 지정된 TTL에 관계없이).
기본적으로 값은 만료되지 않습니다.
TTL 0은 TTL이없는 것과 같습니다.
만약 테이블에 default_time_to_live가 있을때, TTL을 0으로 설정하면 삽입되거나 업데이트된 값의 지정된 TTL이 제거됩니다.
TTL의 null 값은 TTL을 0으로 삽입하는 것과 같습니다.
출처 : http://cassandra.apache.org/doc/latest/cql/dml.html
댓글 없음 :
댓글 쓰기