| 윈 토토 : 문서 : 9.4 : 윈 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.4 : 토토 | PostgreSQL : 문서 : 9.4 : 토토 | 36장. 스포츠 토토 베트맨 | PostgreSQL : 문서 : 9.4 : 데이터 토토 캔 가시성 |
스포츠 토토 베트맨는 특정 유형의 작업이 수행될 때마다 데이터베이스가 자동으로 특정 기능을 실행해야 한다는 사양입니다. 스포츠 토토 베트맨는 테이블, 뷰, 외부 테이블에 연결할 수 있습니다.
테이블 및 외부 테이블에서 스포츠 토토 베트맨는 이전 또는 이후에 실행되도록 정의할 수 있습니다.삽입, 업데이트, 또는삭제작업, 수정된 행당 한 번 또는 행당 한 번SQL진술.업데이트또한 특정 열이 언급된 경우에만 스포츠 토토 베트맨가 실행되도록 설정할 수 있습니다.SET의 절업데이트성명. 스포츠 토토 베트맨는 다음에 대해 실행될 수도 있습니다.잘라내기문장. 스포츠 토토 베트맨 이벤트가 발생하면 해당 이벤트를 처리하기 위해 적절한 시간에 스포츠 토토 베트맨 함수가 호출됩니다. 외부 테이블은 TRUNCATE 문을 전혀 지원하지 않습니다.
뷰에서는 대신 실행되도록 스포츠 토토 베트맨를 정의할 수 있습니다.삽입, 업데이트또는삭제작업. 그런대신스포츠 토토 베트맨는 보기에서 수정해야 하는 각 행에 대해 한 번씩 실행됩니다. 뷰의 기본 테이블에 필요한 수정을 수행하고, 적절한 경우 뷰에 표시될 수정된 행을 반환하는 것은 스포츠 토토 베트맨 기능의 책임입니다. 뷰에 대한 스포츠 토토 베트맨는 1회당 한 번씩 실행되도록 정의할 수도 있습니다.SQL문, 이전 또는 이후삽입, 업데이트또는삭제작업. 그러나 이러한 스포츠 토토 베트맨는 다음이 있는 경우에만 실행됩니다.대신뷰를 스포츠 토토 베트맨합니다. 그렇지 않으면 뷰를 대상으로 하는 모든 명령문은 기본 기본 테이블에 영향을 미치는 명령문으로 다시 작성되어야 하며, 그러면 실행될 스포츠 토토 베트맨는 기본 테이블에 연결된 스포츠 토토 베트맨입니다.
스포츠 토토 베트맨 자체가 생성되기 전에 스포츠 토토 베트맨 기능을 정의해야 합니다. 스포츠 토토 베트맨 함수는 인수를 사용하지 않고 유형을 반환하는 함수로 선언되어야 합니다.스포츠 토토 베트맨. (스포츠 토토 베트맨 함수는 특별히 전달된 메소드를 통해 입력을 받습니다.스포츠 토토 베트맨데이터구조, 일반적인 함수 인수 형식이 아닙니다.)
적절한 스포츠 토토 베트맨 기능이 생성되면 스포츠 토토 베트맨는 다음과 같이 설정됩니다.스포츠 토토 베트맨 생성. 여러 스포츠 토토 베트맨에 동일한 스포츠 토토 베트맨 기능을 사용할 수 있습니다.
포스트그레SQL둘 다 제공행당스포츠 토토 베트맨 및문별스포츠 토토 베트맨. 행별 스포츠 토토 베트맨를 사용하면 스포츠 토토 베트맨 함수는 스포츠 토토 베트맨를 실행한 문에 의해 영향을 받는 각 행에 대해 한 번씩 호출됩니다. 대조적으로, 명령문별 스포츠 토토 베트맨는 해당 명령문의 영향을 받는 행 수에 관계없이 적절한 명령문이 실행될 때 한 번만 호출됩니다. 특히, 0개의 행에 영향을 미치는 명령문은 여전히 적용 가능한 명령문별 스포츠 토토 베트맨를 실행하게 됩니다. 이 두 가지 유형의 스포츠 토토 베트맨를 때때로 호출합니다.행 수준스포츠 토토 베트맨 및문 수준각각 스포츠 토토 베트맨됩니다. 스포츠 토토 베트맨 대상:잘라내기문 수준에서만 정의할 수 있습니다. 뷰에서 전후에 실행되는 스포츠 토토 베트맨는 명령문 수준에서만 정의될 수 있지만, 대신에 실행되는 스포츠 토토 베트맨는삽입, 업데이트또는삭제행 수준에서만 정의할 수 있습니다.
스포츠 토토 베트맨는 실행 여부에 따라 분류됩니다.이전, 이후또는대신에작업. 이를 다음과 같이 지칭합니다.이전스포츠 토토 베트맨,이후스포츠 토토 베트맨 및대신각각 스포츠 토토 베트맨됩니다. 명령문 수준이전문이 어떤 작업을 시작하기 전에 자연스럽게 스포츠 토토 베트맨되는 반면, 문 수준이후문의 끝부분에서 실행을 유발합니다. 이러한 유형의 스포츠 토토 베트맨는 테이블이나 뷰에서 정의될 수 있습니다. 행 수준이전특정 행이 작업되기 직전에 실행을 스포츠 토토 베트맨하는 반면 행 수준이후문의 끝에서 스포츠 토토 베트맨가 실행됩니다(그러나 문 수준 이전이후스포츠 토토 베트맨). 이러한 유형의 스포츠 토토 베트맨는 테이블과 외부 테이블에만 정의할 수 있습니다. 행 수준대신스포츠 토토 베트맨는 뷰에서만 정의할 수 있으며 뷰의 각 행이 작업이 필요한 것으로 식별되면 즉시 실행됩니다.
문별 스포츠 토토 베트맨에 의해 호출된 스포츠 토토 베트맨 함수는 항상 반환되어야 합니다.NULL. 행별 스포츠 토토 베트맨에 의해 호출된 스포츠 토토 베트맨 함수는 테이블 행(유형의 값)을 반환할 수 있습니다.힙튜플)를 호출 실행자에게 전달합니다(선택한 경우). 작업 전에 실행되는 행 수준 스포츠 토토 베트맨에는 다음 선택 사항이 있습니다.
반환할 수 있습니다NULL현재 행에 대한 작업을 건너뜁니다. 이는 스포츠 토토 베트맨를 호출한 행 수준 작업(특정 테이블 행의 삽입, 수정 또는 삭제)을 수행하지 않도록 실행자에게 지시합니다.
행 수준의 경우삽입그리고업데이트스포츠 토토 베트맨만, 반환된 행은 업데이트되는 행을 삽입하거나 대체할 행이 됩니다. 이를 통해 스포츠 토토 베트맨 함수가 삽입되거나 업데이트되는 행을 수정할 수 있습니다.
행 수준이전이러한 동작 중 하나를 발생시키려는 의도가 없는 스포츠 토토 베트맨는 전달된 것과 동일한 행을 결과로 반환하도록 주의해야 합니다(즉,신규행삽입그리고업데이트스포츠 토토 베트맨,오래된행삭제스포츠 토토 베트맨).
행 수준대신스포츠 토토 베트맨는 둘 중 하나를 반환해야 합니다.NULL뷰의 기본 기본 테이블에서 데이터를 수정하지 않았거나 전달된 뷰 행을 반환해야 함을 나타냅니다(신규행삽입그리고업데이트작업 또는오래된행삭제작업). Null이 아닌 반환 값은 스포츠 토토 베트맨가 뷰에서 필요한 데이터 수정을 수행했음을 알리는 데 사용됩니다. 이렇게 하면 명령의 영향을 받는 행 수가 증가합니다. 에 대한삽입그리고업데이트작업 전용, 스포츠 토토 베트맨는 다음을 수정할 수 있습니다.신규행을 반환하기 전에. 그러면 반환된 데이터가 변경됩니다.반환 삽입또는업데이트 반환 중, 제공된 데이터와 정확히 동일한 데이터가 뷰에 표시되지 않을 때 유용합니다.
작업 후에 실행된 행 수준 스포츠 토토 베트맨의 경우 반환 값이 무시되므로 반환할 수 있습니다.NULL.
동일한 관계의 동일한 이벤트에 대해 둘 이상의 스포츠 토토 베트맨가 정의된 경우 스포츠 토토 베트맨는 스포츠 토토 베트맨 이름에 따라 알파벳 순서로 실행됩니다. 의 경우이전그리고대신스포츠 토토 베트맨, 각 스포츠 토토 베트맨에서 반환된 수정 가능성이 있는 행은 다음 스포츠 토토 베트맨에 대한 입력이 됩니다. 있다면이전또는대신스포츠 토토 베트맨 반환NULL, 해당 행에 대한 작업이 중단되고 해당 행에 대한 후속 스포츠 토토 베트맨가 실행되지 않습니다.
스포츠 토토 베트맨 정의는 부울을 지정할 수도 있습니다.언제조건, 스포츠 토토 베트맨가 실행되어야 하는지 확인하기 위해 테스트됩니다. 행 수준에서 스포츠 토토 베트맨는언제조건은 행 열의 이전 및/또는 새 값을 검사할 수 있습니다. (문 수준 스포츠 토토 베트맨도 다음을 가질 수 있습니다.언제조건이지만 이 기능은 그다지 유용하지 않습니다.) a이전스포츠 토토 베트맨, 그언제조건은 함수가 실행되거나 실행되기 직전에 평가되므로 다음을 사용합니다.언제은 스포츠 토토 베트맨 기능 시작 시 동일한 조건을 테스트하는 것과 크게 다르지 않습니다. 그러나,이후스포츠 토토 베트맨, 그언제조건은 행 업데이트가 발생한 직후 평가되며 명령문 끝에서 스포츠 토토 베트맨를 실행하기 위해 이벤트가 대기열에 있는지 여부를 결정합니다. 그래서 언제이후스포츠 토토 베트맨의언제조건이 true를 반환하지 않으면 이벤트를 대기열에 추가하거나 명령문 끝에서 행을 다시 가져올 필요가 없습니다. 이로 인해 스포츠 토토 베트맨가 일부 행에 대해서만 실행되어야 하는 경우 많은 행을 수정하는 문의 속도가 크게 향상될 수 있습니다.대신스포츠 토토 베트맨는 지원하지 않습니다.언제조건.
일반적으로 행 수준이전스포츠 토토 베트맨는 삽입되거나 업데이트될 데이터를 확인하거나 수정하는 데 사용됩니다. 예를 들어,이전스포츠 토토 베트맨는 현재 시간을 a에 삽입하는 데 사용될 수 있습니다.타임스탬프열 또는 행의 두 요소가 일치하는지 확인합니다. 행 수준이후스포츠 토토 베트맨는 업데이트를 다른 테이블에 전파하거나 다른 테이블에 대해 일관성을 검사하는 데 가장 현명하게 사용됩니다. 이러한 노동 분업의 이유는 다음과 같습니다.이후스포츠 토토 베트맨는 행의 최종 값을 보고 있음을 확신할 수 있지만 a이전스포츠 토토 베트맨를 실행할 수 없습니다. 다른 것이 있을 수도 있습니다이전그 이후에 발사가 시작됩니다. 스포츠 토토 베트맨를 할 특별한 이유가 없는 경우이전또는이후, 그이전case가 더 효율적입니다. 작업에 대한 정보는 명령문이 끝날 때까지 저장할 필요가 없기 때문입니다.
스포츠 토토 베트맨 함수가 SQL 명령을 실행하는 경우 이러한 명령은 스포츠 토토 베트맨를 다시 실행할 수 있습니다. 이를 계단식 스포츠 토토 베트맨라고 합니다. 캐스케이드 레벨 수에는 직접적인 제한이 없습니다. 계단식 배열로 인해 동일한 스포츠 토토 베트맨가 재귀적으로 호출될 수 있습니다. 예를 들어,삽입스포츠 토토 베트맨는 동일한 테이블에 추가 행을 삽입하는 명령을 실행할 수 있으며, 이로 인해삽입스포츠 토토 베트맨가 다시 실행됩니다. 이러한 시나리오에서 무한 재귀를 방지하는 것은 스포츠 토토 베트맨 프로그래머의 책임입니다.
스포츠 토토 베트맨가 정의될 때 이에 대한 인수를 지정할 수 있습니다. 스포츠 토토 베트맨 정의에 인수를 포함하는 목적은 유사한 요구 사항을 가진 다양한 스포츠 토토 베트맨가 동일한 함수를 호출할 수 있도록 하는 것입니다. 예를 들어, 두 개의 열 이름을 인수로 취하고 현재 사용자를 하나에 배치하고 현재 타임스탬프를 다른 하나에 배치하는 일반화된 스포츠 토토 베트맨 함수가 있을 수 있습니다. 올바르게 작성되면 이 스포츠 토토 베트맨 함수는 스포츠 토토 베트맨되는 특정 테이블과 독립적입니다. 따라서 동일한 기능을 사용할 수 있습니다.삽입적절한 열이 있는 테이블의 이벤트를 사용하여 예를 들어 트랜잭션 테이블의 레코드 생성을 자동으로 추적합니다. 또한 다음과 같이 정의된 경우 마지막 업데이트 이벤트를 추적하는 데 사용할 수도 있습니다.업데이트스포츠 토토 베트맨.
스포츠 토토 베트맨를 지원하는 각 프로그래밍 언어에는 스포츠 토토 베트맨 입력 데이터를 스포츠 토토 베트맨 기능에 사용할 수 있도록 만드는 고유한 방법이 있습니다. 이 입력 데이터에는 스포츠 토토 베트맨 이벤트 유형이 포함됩니다(예:삽입또는업데이트) 및 다음에 나열된 모든 인수스포츠 토토 베트맨 생성. 행 수준 스포츠 토토 베트맨의 경우 입력 데이터에는 다음도 포함됩니다.신규행삽입그리고업데이트스포츠 토토 베트맨 및/또는오래된행업데이트그리고삭제스포츠 토토 베트맨. 명령문 수준 스포츠 토토 베트맨에는 현재 명령문에 의해 수정된 개별 행을 검사할 수 있는 방법이 없습니다.