윈 토토 : 문서 : 9.4 : 윈 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.4 : 토토 | PostgreSQL : 문서 : 9.4 : 토토 | 36 장. 스포츠 토토 베트맨 | PostgreSQL : 문서 : 9.4 : 데이터 토토 캔 가시성 |
스포츠 토토 베트맨는 특정 유형의 작업이 수행 될 때마다 데이터베이스가 특정 기능을 자동으로 실행해야한다는 사양입니다. 스포츠 토토 베트맨는 테이블, 뷰 및 외국 테이블에 연결할 수 있습니다.
테이블과 외국 테이블에서 스포츠 토토 베트맨는 전후에 실행하도록 정의 할 수 있습니다삽입, 업데이트또는삭제작동, 수정 된 행당 한 번 또는 당시 한 번SQL진술.업데이트스포츠 토토 베트맨는 특정 열에 언급 된 경우에만 해고 될 수 있습니다SET절의 조항업데이트진술. 스포츠 토토 베트맨는 또한 발사 할 수 있습니다Truncate진술. 스포츠 토토 베트맨 이벤트가 발생하면 스포츠 토토 베트맨 기능이 적절한 시간에 호출되어 이벤트를 처리합니다. 외국 테이블은 잘린 진술을 전혀 지원하지 않습니다.
보기에서 스포츠 토토 베트맨는 대신 실행하도록 정의 할 수 있습니다삽입, 업데이트또는삭제운영. 그런대신스포츠 토토 베트맨는 뷰에서 수정 해야하는 각 행마다 한 번 시작됩니다. View의 기본 기본 테이블에 필요한 수정을 수행하는 것은 스포츠 토토 베트맨 기능의 책임이며, 적절한 경우 수정 된 행을 뷰에 표시 할 때 반환합니다. 시야 스포츠 토토 베트맨는 또한 한 번을 한 번 실행하도록 정의 할 수 있습니다.SQL명령문, 전후삽입, 업데이트또는삭제운영. 그러나 그러한 스포츠 토토 베트맨는도있는 경우에만 해고됩니다.대신보기에서 스포츠 토토 베트맨. 그렇지 않으면,보기를 타겟팅하는 모든 진술은 기본베이스 테이블에 영향을 미치는 진술로 다시 작성해야하며, 해고 될 스포츠 토토 베트맨는베이스 테이블에 첨부 된 스포츠 토토 베트맨입니다..
스포츠 토토 베트맨 기능은 스포츠 토토 베트맨 자체를 생성하기 전에 정의되어야합니다. 스포츠 토토 베트맨 함수는 인수를 취하지 않고 반환 유형을 취하는 함수로 선언해야합니다스포츠 토토 베트맨. (스포츠 토토 베트맨 함수는 특수 통과를 통해 입력을 수신합니다TriggerData일반적인 기능 인수의 형태가 아닌 구조.)
적절한 스포츠 토토 베트맨 함수가 만들어지면 스포츠 토토 베트맨가 설정됩니다.스포츠 토토 베트맨 만들기. 동일한 스포츠 토토 베트맨 기능을 여러 스포츠 토토 베트맨에 사용할 수 있습니다.
PostgreSQL제공per-row스포츠 토토 베트맨 및마당 마당스포츠 토토 베트맨. 당 방향 스포츠 토토 베트맨를 사용하면 스포츠 토토 베트맨 기능이 스포츠 토토 베트맨를 발사 한 명령문의 영향을받는 각 행에 대해 한 번 호출됩니다. 대조적으로, 해당 진술의 영향을받는 행의 수에 관계없이 적절한 명령문이 실행될 때 마당 마당 스포츠 토토 베트맨가 한 번만 호출됩니다. 특히, 제로 행에 영향을 미치는 진술은 여전히 적용 가능한 진술 당 스포츠 토토 베트맨를 실행하게됩니다. 이 두 가지 유형의 스포츠 토토 베트맨는 때때로라고합니다.로드 레벨스포츠 토토 베트맨 및명령문 수준스포츠 토토 베트맨. 스포츠 토토 베트맨Truncate명령문 수준에서만 정의 될 수 있습니다. 보기에서, 전후에 발사되는 스포츠 토토 베트맨는 문으로 만 정의 될 수 있으며, 대신 발사를 스포츠 토토 베트맨합니다.삽입, 업데이트또는삭제행 수준에서만 정의 될 수 있습니다.
스포츠 토토 베트맨는 또한 화재 여부에 따라 분류됩니다전, 이후또는대신작업. 이것들은라고합니다.전스포츠 토토 베트맨,이후스포츠 토토 베트맨,대신스포츠 토토 베트맨. 진술 수준전진술이 무엇이든하기 시작하기 전에 자연스럽게 발사되는 반면, 진술 수준이후성명서의 끝에서 발사를 방지합니다. 이러한 유형의 스포츠 토토 베트맨는 테이블 또는 뷰에서 정의 될 수 있습니다. 줄 수준전특정 행이 작동하기 직전에 발사를 스포츠 토토 베트맨하는 반면,로드 레벨이후진술이 끝날 때 발사를 스포츠 토토 베트맨합니다 (그러나 진술 수준 이전이후스포츠 토토 베트맨). 이러한 유형의 스포츠 토토 베트맨는 테이블 및 외국 테이블에서만 정의 될 수 있습니다. 줄 수준대신스포츠 토토 베트맨는 뷰에서만 정의 될 수 있으며,보기의 각 행이 작동 해야하는 것으로 식별되면 즉시 발사 할 수 있습니다..
진술 당 스포츠 토토 베트맨로 호출 된 스포츠 토토 베트맨 함수는 항상 반환해야합니다NULL. 파악 스포츠 토토 베트맨로 호출 된 스포츠 토토 베트맨 기능은 테이블 행을 반환 할 수 있습니다 (유형 값heappuple) 선택한 경우 전화 집행자에게. 작업이 다음과 같은 선택을하기 전에 발사 된로드 레벨 스포츠 토토 베트맨 :
반환 할 수 있습니다null현재 행의 조작을 건너 뜁니다. 이를 통해 집행자는 스포츠 토토 베트맨 (특정 테이블 행의 삽입, 수정 또는 삭제)를 호출 한로드 레벨 작업을 수행하지 않도록 지시합니다..
Row-Level의 경우삽입and업데이트스포츠 토토 베트맨 전용, 반환 된 행은 삽입 될 행이됩니다. 또는 업데이트되는 행을 교체합니다. 이를 통해 스포츠 토토 베트맨 기능이 삽입 또는 업데이트되는 행을 수정할 수 있습니다.
행 수준전이러한 동작 중 하나를 유발하지 않는 스포츠 토토 베트맨 결과는 결과적으로 통과 된 동일한 행을 결과적으로 반환하기 위해주의해야합니다 (즉,NEW행삽입and업데이트스포츠 토토 베트맨,old행삭제스포츠 토토 베트맨).
행 수준대신스포츠 토토 베트맨가 반환해야합니다NULL보기의 기본 기본 테이블에서 데이터를 수정하지 않았거나 (에 전달 된 뷰 행을 반환해야 함을 나타냅니다.NEW행삽입and업데이트운영 또는old행삭제운영). 비 널 리턴 값은 스포츠 토토 베트맨가 뷰에서 필요한 데이터 수정을 수행했음을 알리는 데 사용됩니다. 이로 인해 명령에 의해 영향을받는 행의 수가 증가하게됩니다. 을 위한삽입and업데이트작동 만 해당하는 스포츠 토토 베트맨가 수정할 수 있습니다NEW반환하기 전에 행. 이것은에 의해 반환 된 데이터를 변경합니다.리턴 삽입또는반환 업데이트
반환 값은 작업 후 해고 된로드 레벨 스포츠 토토 베트맨에 대해 무시되므로 반환 할 수 있습니다NULL.
동일한 관계에서 동일한 이벤트에 대해 둘 이상의 스포츠 토토 베트맨가 정의되면 스포츠 토토 베트맨는 스포츠 토토 베트맨 이름으로 알파벳 순서로 해고됩니다. 의 경우전and대신스포츠 토토 베트맨, 각 스포츠 토토 베트맨에 의해 반환 될 수있는 수정 행은 다음 스포츠 토토 베트맨에 대한 입력이됩니다.전또는대신스포츠 토토 베트맨 리턴NULL, 해당 행에 작업이 버려지고 후속 스포츠 토토 베트맨가 해고되지 않습니다 (해당 행)
스포츠 토토 베트맨 정의는 부울을 지정할 수도 있습니다언제조건. 스포츠 토토 베트맨를 발사 해야하는지 확인하기 위해 테스트됩니다. 로드 레벨에서 스포츠 토토 베트맨언제조건은 행의 기존 및/또는 새 값을 검사 할 수 있습니다. (진술 수준 스포츠 토토 베트맨도 가질 수 있습니다언제조건, 특징이 그다지 유용하지는 않지만 조건.)에서전스포츠 토토 베트맨,언제조건은 함수가 실행되기 직전에 평가됩니다.when스포츠 토토 베트맨 함수의 시작 부분에서 동일한 조건을 테스트하는 것과 실질적으로 다르지 않습니다. 그러나에서이후스포츠 토토 베트맨,언제조건은 행 업데이트가 발생한 직후에 평가되며 명세서 끝에서 스포츠 토토 베트맨를 발사하기 위해 이벤트가 대기되는지 여부를 결정합니다. 그래서이후Trigger 's언제조건은 사실을 반환하지 않으며, 이벤트를 대기하거나 성명서 끝에서 행을 다시 가져올 필요는 없습니다. 이로 인해 스포츠 토토 베트맨가 몇 줄에 대해서만 발사되면 많은 행을 수정하는 진술에서 상당한 속도를 높일 수 있습니다.대신스포츠 토토 베트맨는 지원하지 않습니다언제조건
일반적으로,로드 레벨전스포츠 토토 베트맨는 삽입 또는 업데이트 될 데이터를 확인하거나 수정하는 데 사용됩니다. 예를 들어, A전스포츠 토토 베트맨는 현재 시간을 a에 삽입하는 데 사용될 수 있습니다타임 스탬프열 또는 행의 두 요소가 일관되어 있는지 확인합니다. 줄 수준이후스포츠 토토 베트맨는 다른 테이블로 업데이트를 전파하거나 다른 테이블에 대한 일관성 검사를하는 데 가장 현명하게 사용됩니다. 이 노동 분업의 이유는 때문입니다.이후스포츠 토토 베트맨는 행의 최종 값이 보이는 반면 A전스포츠 토토 베트맨는 할 수 없습니다. 다른 것이있을 수 있습니다전그 후 발사를 유발합니다. 방아쇠를 만들 이유가없는 경우전또는이후, The전사례는 더 효율적입니다. 성명서가 끝날 때까지 작업에 대한 정보를 저장할 필요가 없기 때문에
스포츠 토토 베트맨 함수가 SQL 명령을 실행하면 이러한 명령이 다시 스포츠 토토 베트맨 될 수 있습니다. 이것은 계단식 스포츠 토토 베트맨라고합니다. 캐스케이드 수준의 수에는 직접 제한이 없습니다. 캐스케이드는 동일한 트리거의 재귀 적 호출을 일으킬 수 있습니다. 예를 들어, an삽입스포츠 토토 베트맨는 추가 행을 동일한 테이블에 삽입하는 명령을 실행하여삽입다시 해고 될 스포츠 토토 베트맨. 그러한 시나리오에서 무한 재귀를 피하는 것은 스포츠 토토 베트맨 프로그래머의 책임입니다.
스포츠 토토 베트맨가 정의되면 인수를 지정할 수 있습니다. 스포츠 토토 베트맨 정의에 인수를 포함시키는 목적은 유사한 요구 사항을 가진 다른 스포츠 토토 베트맨가 동일한 함수를 호출하도록 허용하는 것입니다. 예를 들어, 인수로서 두 개의 열 이름을 가져오고 현재 사용자를 하나의 현재 타임 스탬프에 넣는 일반화 된 스포츠 토토 베트맨 함수가있을 수 있습니다. 올바르게 작성된이 스포츠 토토 베트맨 기능은 스포츠 토토 베트맨중인 특정 테이블과 무관합니다. 따라서 동일한 기능이 사용될 수 있습니다.삽입예를 들어 거래 테이블에서 레코드 생성을 자동으로 추적하려면 적절한 열이있는 테이블의 이벤트. 또한로 정의 된 경우 마지막 업데이트 이벤트를 추적하는 데 사용될 수 있습니다.업데이트스포츠 토토 베트맨
스포츠 토토 베트맨를 지원하는 각 프로그래밍 언어에는 스포츠 토토 베트맨 입력 데이터를 스포츠 토토 베트맨 함수에 사용할 수 있도록하는 자체 방법이 있습니다. 이 입력 데이터에는 스포츠 토토 베트맨 이벤트 유형이 포함됩니다 (예 :삽입또는업데이트) 및에 나열된 인수스포츠 토토 베트맨 만들기. 로드 레벨 트리거의 경우 입력 데이터에도가 포함됩니다.NEW행삽입and업데이트스포츠 토토 베트맨 및/또는old행업데이트and삭제스포츠 토토 베트맨. 명령문 수준 스포츠 토토 베트맨는 현재 명세서에 의해 수정 된 개별 행을 조사 할 방법이 없습니다.