가끔씩 두 테이블의 직원 및 위치가 있습니다. Additionaly 나는 Employee와 Locations에 합류하여 viewEmpLocation 뷰를 가진다.뷰를 업데이트하면 원본 테이블이 업데이트됩니까
보기를 업데이트하면 원본 테이블의 데이터가 업데이트됩니까? 도면 통해 데이터를 수정할 때
가끔씩 두 테이블의 직원 및 위치가 있습니다. Additionaly 나는 Employee와 Locations에 합류하여 viewEmpLocation 뷰를 가진다.뷰를 업데이트하면 원본 테이블이 업데이트됩니까
보기를 업데이트하면 원본 테이블의 데이터가 업데이트됩니까? 도면 통해 데이터를 수정할 때
(즉 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이 지정되지 않은 경우.
예.
보기의 "in"데이터에는보기를 구성하는 테이블과 독립적 인 존재가 없습니다. 뷰는 본질적으로 테이블로 가장하는 저장 SELECT 문입니다. 데이터는 원 래 테이블에 저장되며이를 보려는 경우에만 뷰에 "어셈블"됩니다. 뷰가 갱신 가능한 경우 (모든 뷰가 아닌 경우) 갱신 사항이 테이블 데이터에 적용됩니다.
나는 당신의 요지를 이해합니다. 그러나 뷰가 단지 select 문일 경우 새로운 질문이 발생합니다. 그러면 인덱스가 뷰에서 유지되는 방법. 누군가가보기를 쿼리하면 모든 색인이 다시 작성됩니까? –
뷰에는 인덱스가없고 기본 테이블에만 인덱스가 있습니다. 인덱스는 뷰에서 데이터를 요청할 때 DBMS가 다른 테이블의 행을 어셈블하는 데 사용됩니다. (이는 데이터베이스가 데이터의 "섀도우"복사본을 저장하고 효과적으로 뷰를 미리 계산하는 "구체화 된 뷰"라는 매우 새로운 종류의 뷰를 무시합니다. –
뷰에서 트리거를 사용하여 실제 테이블을 삽입/업데이트/삭제할 수 있습니다.
http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/1/
답변에 대한 의견을 보내 주시면 감사하겠습니다. 그러나 부정적인 의견이 있으면 아무도 의견을 말하지 않습니다. 나는 틀린 경우에 정정되고 싶으면. –
질문은 뷰 업데이트의 효과에 대해 명시 적으로 묻습니다. 제안 대안은 훌륭하지만 모든 질문에 답하지 않습니다. – Dan
내가 개인적으로 간단하게 테이블에 직접 삽입 할 찾을 수 있다는 뷰를 통해 삽입에 많은주의 사항이 있습니다. 결국 규칙을 준수하기 위해 어떤 필드를 어떤 테이블로 이동해야 하는지를 직접 확인하고 테이블을 직접 업데이트하거나 삽입하지 않을 이유가 없다는 것을 알고 있어야합니다. – HLGEM
실제로 뷰에 대해 UPDATE 또는 INSERT를 수행 한 적이 없지만 변경이 필요한 행을 빨리 찾을 수있는 인덱싱 된 뷰가있는 경우 이점이 있습니다. 이 경우 업데이트 목적으로보기를 구성 할 것입니다. –