programing

데이터베이스의 보기를 업데이트할 수 있습니까?

yellowcard 2023. 7. 4. 21:48
반응형

데이터베이스의 보기를 업데이트할 수 있습니까?

데이터베이스에서 보기를 업데이트할 수 있습니까?만약 그렇다면, 어떻게?그렇지 않다면, 왜?

실제 대답은 "그것은 의존한다"입니다. 절대적인 것은 없습니다.

기본 기준은 데이터베이스 엔진의 의견에 따라 업데이트 가능한 뷰여야 합니다. 즉, 엔진이 업데이트할 행을 고유하게 식별할 수 있어야 하며, 두 번째는 필드를 업데이트할 수 있어야 합니다.보기에 계산된 필드가 있거나 부모/자녀 조인의 제품을 나타내는 경우 기본 대답은 "아니오"입니다.

하지만 속임수를 쓰는 것도 가능합니다...MS SQL Server 및 Oracle에서는 보기를 삽입하거나 업데이트하려고 할 때 트리거가 발생하여 서버가 스키마에서 쉽게 추론할 수 없는 지식을 가지고 있기 때문에 서버가 업데이트할 수 없는 것으로 만들 수 있습니다.

정답은 "그것은 의존한다"입니다.예를 들어 뷰의 집계 열은 업데이트할 수 없습니다.Oracle 보기의 경우 보기를 업데이트할 수 있는 경우와 업데이트할 수 없는 경우의 "업데이트 가능한 가입 보기"를 구글에서 검색할 수 있습니다.

예, 업데이트 가능하지만 항상 업데이트되는 것은 아닙니다.보기는 다음에서 업데이트할 수 있습니다.

  • 보기가 작성된 테이블의 기본 키로 구성된 경우.

  • 보기가 하나의 테이블만 기준으로 정의된 경우.

  • 그룹 및 집계 함수를 사용하여 보기를 정의하지 않은 경우.
  • 뷰의 정의에 별도의 절이 없는 경우.
  • 업데이트해야 하는 보기가 다른 보기를 기반으로 하는 경우 나중에 업데이트할 수 있어야 합니다.
  • 보기 정의에 하위 쿼리가 없는 경우.

PostgreSQL에는 업데이트 가능한 VIEW를 만드는 규칙이 있습니다.사용 방법을 보려면 설명서의 예제를 확인하십시오.

추신: 포스트그레SQL a VIEW는 선택 규칙인 규칙입니다.

이전에는 보기를 업데이트할 수 없었습니다.보기의 주요 목적은 데이터, 즉 이름을 보는 입니다.저장된 쿼리라고도 할 수 있습니다.

오늘날 많은 데이터베이스 엔진이 보기 업데이트를 지원합니다.제한 사항에 묶여 있으며 일부 업데이트는 사실상 불가능합니다(예: 계산된 열, 그룹화 기준 등).

두 가지 접근 방식이 있습니다.

  1. 기본적으로 문제를 사용자에게 전가하는 트리거는 기본적으로 문제를 해결합니다.당신은 그 일을 하는 절차 코드를 작성합니다.물론 정확성, 일관성 등에 대한 보장은 없습니다.RDBMS 엔진의 관점에서 볼 때 보기에서 어떤 업데이트가 이루어졌든 기본 테이블에서 모든 항목을 삭제하는 트리거는 완벽하게 정상입니다.

  2. 훨씬 더 야심찬 것은 RDBMS 엔진이 독점적으로 처리하는 업데이트 보기입니다.여기서 많은 진전이 이루어지지 않고 있습니다. 부드럽게 말하자면, 좋은 아이디어가 있다면 박사 논문을 발표할 수 있습니다.실제로 좋아하는 RDBMS는 애드혹 보기 업데이트를 제한할 수 있습니다. 설명서를 확인하십시오.-)

예, 가능하지만 CREATE VIEW(Transact-SQL)확인하고 Updateable Views 섹션을 참조하십시오.

http://msdn.microsoft.com/en-us/library/ms187956.aspx

비고\업데이트 가능 보기 참조

예 - 구문이 테이블을 업데이트하는 것과 동일합니다.

Update MyView
Set Col1 = "Testing"
Where Col2 = 3
Go

업데이트할 수 있는 보기를 만드는 데는 몇 가지 조건이 있습니다.여기에서 확인할 수 있습니다.

편집:

MS SQL 기반으로 추가해야 합니다.

SQL Server에서 보기가 생성되면 참조된 테이블 열(열 이름 및 순서 위치)에 대한 메타데이터가 데이터베이스에 유지됩니다.참조된 기본 테이블에 대한 변경 사항(열 재정렬, 새 열 추가 등)은 뷰가 다음 중 하나일 때까지 뷰에 반영되지 않습니다.

•ALTER VIEW 문으로 변경 •DROP VIEW/CREATE VIEW 문으로 다시 작성 •시스템 저장 프로시저 sp_refreshview를 사용하여 새로 고침

예, 트리거 대신 사용합니다.

일반적으로 보기는 업데이트하지 않습니다.조인 및 조건을 기준으로 다양한 테이블에서 데이터를 가져오는 보기가 작성됩니다.

보기는 호출할 때 원하는 데이터 세트를 제공하는 배치된 논리일 뿐입니다.

그러나 보기를 업데이트해야 하는 시나리오가 무엇인지 잘 모르겠습니다.

언급URL : https://stackoverflow.com/questions/3777918/is-a-view-in-the-database-updatable

반응형