2010-04-15 2 views

답변

22

(즉 INSERT 또는 UPDATE 문을 사용한다)

Using Views in Microsoft SQL Server 참조 특정 제한도의 유형에 따라 존재한다. 뷰 은 여러 테이블에 액세스하면 뷰의 테이블 중 하나만 수정할 수 있습니다. 기능을 사용하거나 DISTINCT를 지정하거나 GROUP BY 절을 사용하는보기는 업데이트되지 않을 수 있습니다. 는 또한 데이터를 삽입하는 이 보기 다음 유형의 금지 :

* views having columns with derived (i.e., computed) data in the SELECT-list 
* views that do not contain all columns defined as NOT NULL from the tables from which they were defined 

그것은 삽입하거나 업데이트 데이터 데이터가 더 이상 볼 통해 액세스 있도록 뷰를 통해 할 수도 있습니다, WITH CHECK OPTION이 지정되지 않은 경우.

+0

내가 개인적으로 간단하게 테이블에 직접 삽입 할 찾을 수 있다는 뷰를 통해 삽입에 많은주의 사항이 있습니다. 결국 규칙을 준수하기 위해 어떤 필드를 어떤 테이블로 이동해야 하는지를 직접 확인하고 테이블을 직접 업데이트하거나 삽입하지 않을 이유가 없다는 것을 알고 있어야합니다. – HLGEM

+0

실제로 뷰에 대해 UPDATE 또는 INSERT를 수행 한 적이 없지만 변경이 필요한 행을 빨리 찾을 수있는 인덱싱 된 뷰가있는 경우 이점이 있습니다. 이 경우 업데이트 목적으로보기를 구성 할 것입니다. –

12

예.

보기의 "in"데이터에는보기를 구성하는 테이블과 독립적 인 존재가 없습니다. 뷰는 본질적으로 테이블로 가장하는 저장 SELECT 문입니다. 데이터는 원 래 테이블에 저장되며이를 보려는 경우에만 뷰에 "어셈블"됩니다. 뷰가 갱신 가능한 경우 (모든 뷰가 아닌 경우) 갱신 사항이 테이블 데이터에 적용됩니다.

+0

나는 당신의 요지를 이해합니다. 그러나 뷰가 단지 select 문일 경우 새로운 질문이 발생합니다. 그러면 인덱스가 뷰에서 유지되는 방법. 누군가가보기를 쿼리하면 모든 색인이 다시 작성됩니까? –

+1

뷰에는 인덱스가없고 기본 테이블에만 인덱스가 있습니다. 인덱스는 뷰에서 데이터를 요청할 때 DBMS가 다른 테이블의 행을 어셈블하는 데 사용됩니다. (이는 데이터베이스가 데이터의 "섀도우"복사본을 저장하고 효과적으로 뷰를 미리 계산하는 "구체화 된 뷰"라는 매우 새로운 종류의 뷰를 무시합니다. –

5

뷰에서 트리거를 사용하여 실제 테이블을 삽입/업데이트/삭제할 수 있습니다.

http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/1/

+4

답변에 대한 의견을 보내 주시면 감사하겠습니다. 그러나 부정적인 의견이 있으면 아무도 의견을 말하지 않습니다. 나는 틀린 경우에 정정되고 싶으면. –

+4

질문은 뷰 업데이트의 효과에 대해 명시 적으로 묻습니다. 제안 대안은 훌륭하지만 모든 질문에 답하지 않습니다. – Dan

관련 문제