윈 토토

윈 토토 - 테이블의 윈 토토

시놉시스

[[recursive]with_Query[, ...]]
윈 토토 [만]table_name[ *] [[as]별명]
    세트column_name=표현| 기본값 |
          (column_name[, ...]) = [row] (표현| 기본값 [, ...]) |
          (column_name[, ...]) = (sub-select)
         [, ...]
    [ 에서from_item[, ...]]
    [ 어디조건| 어디서cursor_name]
    [반환  * |output_expression[[as]output_name] [, ...]]

설명

윈 토토상태를 만족하는 모든 행에서 지정된 열의 값을 변경합니다. 수정 될 열만 언급해야합니다.set절; 명시 적으로 수정되지 않은 열은 이전 값을 유지합니다.

데이터베이스의 다른 테이블에 포함 된 정보를 사용하여 테이블을 수정하는 두 가지 방법이 있습니다. 하위 선택을 사용하거나 추가 테이블을 지정하는From절. 어떤 기술이 더 적절한 지 특정 상황에 따라 다릅니다.

선택 사항반환절의 원인윈 토토실제로 윈 토토 된 각 행을 기반으로 값을 계산하고 반환합니다. 테이블의 열을 사용한 모든 표현 및/또는에 언급 된 다른 테이블의 열From, 계산할 수 있습니다. 테이블 열의 새로운 (사후 윈 토토) 값이 사용됩니다. 의 구문반환목록은 출력 목록의 목록과 동일합니다select.

당신은가 있어야합니다.윈 토토테이블의 특권 또는 최소한 윈 토토 될 열에서. 당신은 또한가 있어야합니다.select값에서 값을 읽는 모든 열의 특권표현또는조건.

매개 변수

With_Query

thewith절에서 이름으로 언급 할 수있는 하나 이상의 하위 쿼리를 지정할 수 있습니다.윈 토토쿼리. 보다PostgreSQL : 문서 : 17 : 7.8. 스포츠 토토 사이트와 함께 (공통 테이블 표현식)andselect자세한 내용.

table_name

윈 토토 할 테이블의 이름 (선택적으로 스키마 자격). 만약에전용테이블 이름 앞에 지정되어 있으며, 일치 행은 명명 된 테이블에서만 윈 토토됩니다. 만약에전용지정되지 않았으며, 일치 행은 이름이 지정된 테이블에서 상속되는 테이블에서도 윈 토토됩니다. 선택적으로,*테이블 이름 후에 지정하여 자손 테이블이 포함되어 있음을 명시 적으로 표시 할 수 있습니다.

별명

대상 테이블의 대체 이름. 별칭이 제공되면 테이블의 실제 이름을 완전히 숨 깁니다. 예를 들어, 주어진foo 윈 토토 foo, 나머지윈 토토진술은이 테이블을로 언급해야합니다.Fnotfoo.

column_name

|table_name. 열 이름은 필요한 경우 하위 필드 이름 또는 배열 첨자로 자격을 갖추 수 있습니다. 대상 열 사양에 테이블 이름을 포함하지 마십시오 (예 :윈 토토 table_name set table_name.col = 1무효.

표현

열에 할당하는 표현식. 표현식은 테이블 의이 값과 다른 열의 기존 값을 사용할 수 있습니다.

기본값

열을 기본값으로 설정합니다 (특정 기본 표현식이 할당되지 않은 경우 NULL이됩니다). ID 열은 관련 시퀀스에 의해 생성 된 새로운 값으로 설정됩니다. 생성 된 열의 경우,이를 지정하는 것은 허용되지만 단지 생성 표현식에서 열을 계산하는 정상적인 동작을 지정합니다..

Sub-Select

aselect이전의 괄호 화 된 열 목록에 나열된 많은 출력 열을 생성하는 하위 쿼리. 하위 쿼리는 실행될 때 1 행을 넘어서는 안됩니다. 하나의 행을 생성하면 열 값이 대상 열에 할당됩니다. 행이 없으면 행 값이 대상 열에 할당됩니다. 하위 쿼리는 윈 토토중인 테이블의 현재 행의 기존 값을 참조 할 수 있습니다.

from_item

다른 테이블에서 열이 표시 될 수있는 테이블 표현식여기서조건 및 윈 토토 표현식. 이것은와 동일한 구문을 사용합니다.Froma 조항select진술; 예를 들어, 테이블 이름의 별칭을 지정할 수 있습니다. 대상 테이블을 A로 반복하지 마십시오.from_item자체 교육을 의도하지 않는 한 (이 경우에 별명으로 나타나야합니다from_item).

조건

유형의 값을 반환하는 표현식부울. 이 표현이 반환되는 행만true윈 토토됩니다.

cursor_name

a에서 사용할 커서의 이름현재의 전류조건. 윈 토토 될 행은이 커서에서 가장 최근에 가져온 행입니다. 커서는에서 그룹화가 아닌 쿼리 여야합니다.윈 토토의 대상 테이블. 참고현재의 전류부울 조건과 함께 지정할 수 없습니다. 보다선언커서 사용에 대한 자세한 내용은전류의 위치.

output_expression

|윈 토토각 행이 윈 토토 된 후 명령. 표현식은에 의해 이름이 지정된 테이블의 열 이름을 사용할 수 있습니다.table_name또는 테이블에 나열된From. 쓰다*모든 열을 반환하려면

output_name

반환 된 열에 사용할 이름.

출력

성공적인 완료시윈 토토명령은 양식의 명령 태그를 반환

윈 토토count

thecount값이 변경되지 않은 일치 행을 포함하여 행이 윈 토토되었습니다. 그 숫자는와 일치하는 행의 수보다 적을 수 있습니다.조건a에 의해 윈 토토가 억제되는 경우윈 토토 전트리거. 만약에countis 0, 쿼리에 의해 행이 윈 토토되지 않았다 (이것은 오류로 간주되지 않음).

윈 토토명령이 포함되어반환조항, 결과는 a의 결과와 유사합니다.select반환목록, 명령에 의해 윈 토토 된 행을 통해 계산됩니다.

노트

언제From조항이 존재합니다. 본질적으로 발생하는 일은 대상 테이블이에 언급 된 테이블에 결합 된 것입니다.from_item목록 및 조인의 각 출력 행은 대상 테이블의 윈 토토 작업을 나타냅니다. 사용시From결합이 각 행에 대해 최대 하나의 출력 행을 생성해야합니다. 다시 말해, 대상 행은 다른 테이블에서 둘 이상의 행에 결합해서는 안됩니다. 그렇다면, 결합 행 중 하나만 사용하여 대상 행을 윈 토토하지만 사용될 제품은 쉽게 예측할 수 없습니다..

이 불확실성으로 인해 하위 선택 내에서 다른 테이블 만 참조하는 것은 더 안전하지만 종종 가입을 사용하는 것보다 읽기가 어렵고 느리게합니다..

분할 된 테이블의 경우 행을 윈 토토하면 더 이상 포함 된 파티션의 파티션 제약 조건을 충족시키지 못할 수 있습니다. 이 경우,이 행이 파티션 제약 조건을 충족시키는 파티션 트리에 다른 파티션이 있으면 행은 해당 파티션으로 이동합니다. 그러한 파티션이 없으면 오류가 발생합니다. 무대 뒤에서 행 움직임은 실제로입니다.삭제삽입작동.

동시 일 가능성이 있습니다윈 토토또는삭제이동중인 행에서 직렬화 실패 오류가 발생합니다. 세션 1이 수행 중이라고 가정합니다윈 토토파티션 키에서, 그 동안이 행이 보이는 동시 세션 2는 an을 수행합니다.윈 토토또는삭제이 행에서 작동합니다. 그러한 경우 세션 2의윈 토토또는삭제행 움직임을 감지하고 직렬화 실패 오류가 발생합니다 (항상 SQLSTATE 코드 '40001'으로 반환). 신청서는 거래가 발생하면 거래를 다시 시도 할 수 있습니다. 테이블이 분할되지 않거나 행 움직임이없는 일반적인 경우 세션 2는 새로 윈 토토 된 행을 식별하고를 수행했을 것입니다.윈 토토/삭제이 새 행 버전에서.

행은 로컬 파티션에서 외국 테이블 파티션으로 이동할 수 있지만 (외국 데이터 래퍼가 튜플 라우팅을 지원하는 경우) 외국 테이블 파티션에서 다른 파티션으로 이동할 수 없습니다..

한 파티션에서 다른 파티션으로 행을 이동하려는 시도는 외국 키가 소스 파티션의 조상을 직접 참조하는 경우윈 토토쿼리.

예제

단어 변경드라마to드라마열에서Kind표의Films:

윈 토토 영화 세트 종류 = 'dramatic'where where 'drama';

온도 항목 조정 및 테이블의 한 줄에서 기본값으로 강수량을 재설정날씨:

윈 토토 날씨 세트 temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = default
  여기서 도시 = '샌프란시스코'및 날짜 = '2003-07-03';

동일한 작업을 수행하고 윈 토토 된 항목을 반환합니다.

윈 토토 날씨 세트 temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = default
  여기서 도시 = '샌프란시스코'및 날짜 = '2003-07-03'
  반환 temp_lo, temp_hi, prcp;

대체 열 목록 구문을 사용하여 동일한 윈 토토를 수행하십시오 :

윈 토토 날씨 세트 (temp_lo, temp_hi, prcp) = (temp_lo+1, temp_lo+15, 기본값)
  여기서 도시 = '샌프란시스코'및 날짜 = '2003-07-03';

ACME Corporation의 계정을 관리하는 영업 사원의 판매 수를 촉진합니다.From조항 구문 :

직원 윈 토토 세트 Sales_Count = Sales_Count + 1 계정에서
  여기서 accounts.name = 'Acme Corporation'
  and Employees.id = accounts.sales_person;

에서 하위 선택을 사용하여 동일한 작업을 수행합니다여기서절 :

직원 윈 토토 Set Sales_Count = Sales_Count + 1 여기서 id =
  (이름 = 'acme corporation');이면 계정에서 sales_person을 선택하십시오.

현재 지정된 영업 사원과 일치하도록 계정 테이블의 연락처 이름 윈 토토 :

윈 토토 계정 세트 (contact_first_name, contact_last_name) =
    (직원에서 First_name, Last_name을 선택하십시오
     where Employees.id = accounts.sales_person);

가입으로 유사한 결과를 얻을 수 있습니다.

윈 토토 계정 세트 contact_first_name = first_name,
                    contact_last_name = last_name
  직원의 직원에서 id = accounts.sales_person;

그러나 두 번째 쿼리는 예상치 못한 결과를 제공 할 수 있습니다직원.id는 고유 키가 아니며, 첫 번째 쿼리는 여러 개가 있으면 오류가 발생하도록 보장됩니다id일치합니다. 또한 특정과 일치하지 않는 경우계정.sales_person항목, 첫 번째 쿼리는 해당 이름 필드를 NULL로 설정하는 반면, 두 번째 쿼리는 해당 행을 전혀 윈 토토하지 않습니다..

현재 데이터와 일치하도록 요약 테이블의 통계 윈 토토 :

SOMPARY S SET (sum_x, sum_y, avg_x, avg_y) =
    (SOLE SOLE SOM (X), SUM (y), avg (x), avg (y) data d
     여기서 d.group_id = s.group_id);

재고량과 함께 새 재고 품목을 삽입하려고 시도합니다. 항목이 이미 존재하는 경우 대신 기존 품목의 재고 수를 윈 토토하십시오. 전체 트랜잭션에 실패하지 않고이 작업을 수행하려면 SavePoints를 사용하십시오.

시작;
- 다른 작업
SavePoint SP1;
와인 값에 삽입 ( 'Chateau Lafite 2003', '24');
- 고유 한 주요 위반으로 인해 위의 실패가 발생한다고 가정합니다.
- 이제 우리는 다음과 같은 명령을 발행합니다.
SP1 로의 롤백;
윈 토토 와인 세트 주식 = 스톡 + 24 여기서 Winename = 'Chateau Lafite 2003';
- 다른 작업을 계속하고 결국
저지르다;

변경Kind표의 열영화커서의 행에C_FILMS현재 위치 :

윈 토토 필름 세트 c_films의 전류에서

많은 행에 영향을 미치는 윈 토토는 테이블 팽창, 복제 지연 증가 및 잠금 경합 증가와 같은 시스템 성능에 부정적인 영향을 줄 수 있습니다. 그러한 상황에서는 더 작은 배치로 작동을 수행하는 것이 합리적 일 수 있습니다.진공배치 사이의 테이블에서 작동. 없지만Limit조항윈 토토, a를 통해 유사한 효과를 얻을 수 있습니다.PostgreSQL : 문서 : 17 : 7.8. 스포츠 토토 사이트와 함께 (공통 테이블 표현식)그리고 자기 접합. 표준PostgreSQL테이블 액세스 방법, 시스템 열의 자체 합의CTID매우 효율적입니다 :

work_item에서 w.ctid를 w로 선택하십시오
    여기서 w.status = 'active'및 w.num_retries 10
    W.retry_timestamp의 주문
    윈 토토를 위해
    제한 5000
))
work_item set status = '실패'윈 토토
  EMR로서 초과 _max_retries에서
  여기서 work_item.ctid = emr.ctid;

이 명령은 행이 윈 토토되지 않을 때까지 반복해야합니다. AN 사용주문 by절 항목은 명령이 윈 토토 될 행을 우선 순위로 삼도록 허용합니다. 또한 동일한 주문을 사용하는 경우 다른 윈 토토 작업으로 교착 상태를 방지 할 수도 있습니다. 잠금 경합이 우려되는 경우스킵 잠긴|CTE여러 명령이 동일한 행을 윈 토토하는 것을 방지합니다. 그러나 그때 최종윈 토토없음스킵 잠긴또는Limit일치하는 행이 간과되지 않도록하려면 필요합니다.

호환성

이 명령은에 부합합니다.SQL표준을 제외하고Fromand반환조항은PostgreSQL사용 능력과 마찬가지로 확장withwith윈 토토.

일부 다른 데이터베이스 시스템은 A를 제공합니다.From대상 테이블이 다시 나열되어야하는 옵션​​From. 그것은 방법이 아닙니다PostgreSQL해석From. 이 확장자를 사용하는 응용 프로그램을 포팅 할 때주의하십시오.

표준에 따르면, 대상 열 이름의 괄호로 된 하위 목록의 소스 값은 올바른 열의 열을 산출하는 행 값 표현식 일 수 있습니다..PostgreSQL소스 값이 A 만 허용합니다.행 생성자또는 하위select. 개별 열의 윈 토토 된 값은로 지정할 수 있습니다.기본값행-건설자 케이스에서는 하위 내부에 있지 않음select.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면