TẠO CHẾ ĐỘ XEM (Transact-SQL) – Máy chủ SQL – t-sql tạo chế độ xem ví dụ

TẠO CHẾ ĐỘ XEM (Transact-SQL)

Bạn đang xem: t-sql tạo chế độ xem

TẠO CHẾ ĐỘ XEM (Transact-SQL)

Trong bài viết này

Áp dụng cho: SQL Server (tất cả các phiên bản được hỗ trợ) Cơ sở dữ liệu Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Hệ thống phân tích nền tảng (PDW)

Tạo một bảng ảo có nội dung (cột và hàng) được xác định bởi một truy vấn. Sử dụng câu lệnh này để tạo dạng xem dữ liệu trong một hoặc nhiều bảng trong cơ sở dữ liệu. Ví dụ: một chế độ xem có thể được sử dụng cho các mục đích sau:

  • Để tập trung, đơn giản hóa và tùy chỉnh nhận thức của mỗi người dùng về cơ sở dữ liệu.

  • Là một cơ chế bảo mật bằng cách cho phép người dùng truy cập dữ liệu thông qua chế độ xem, mà không cấp cho người dùng quyền truy cập trực tiếp vào các bảng cơ sở bên dưới.

  • Cung cấp giao diện tương thích ngược để mô phỏng một bảng có giản đồ đã thay đổi.

Quy ước về cú pháp Transact-SQL

Cú pháp

  - Cú pháp cho SQL Server và Azure SQL Database
  
TẠO [HOẶC ALTER] XEM [schema_name. ] view_name [(column [, ... n])]
[VỚI & lt; view_attribute & gt; [ ,...N ] ]
AS select_statement
[CÓ LỰA CHỌN KIỂM TRA]
[; ]
  
& lt; view_attribute & gt; :: =
{
    [TIẾP TỤC]
    [SCHEMABINDING]
    [VIEW_METADATA]
}
 
  - Cú pháp cho Azure Synapse Analytics và Kho dữ liệu song song
  
TẠO CHẾ ĐỘ XEM [schema_name. ] view_name [(column_name [, ... n])]
NHƯ & lt; select_statement & gt;
[;]
  
& lt; select_statement & gt; :: =
    [VỚI & lt; biểu_thức chung & gt; [ ,...N ] ]
    CHỌN & lt; select_criteria & gt;
 

Lưu ý

Để xem cú pháp Transact-SQL cho SQL Server 2014 trở về trước, hãy xem Tài liệu về các phiên bản trước .

Đối số

HOẶC THAY THẾ

Áp dụng cho : Cơ sở dữ liệu Azure SQL và SQL Server (bắt đầu với SQL Server 2016 (13.x) SP1).

Chỉ thay đổi chế độ xem có điều kiện nếu nó đã tồn tại.

schema_name
Là tên của lược đồ chứa chế độ xem.

view_name
Là tên của khung nhìn. Xem tên phải tuân theo các quy tắc cho số nhận dạng. Việc chỉ định tên chủ sở hữu chế độ xem là tùy chọn.

cột
Là tên được sử dụng cho một cột trong một khung nhìn. Tên cột chỉ được yêu cầu khi cột có nguồn gốc từ biểu thức số học, hàm hoặc hằng số; khi hai hoặc nhiều cột có thể có cùng tên, thường là do một phép nối; hoặc khi một cột trong dạng xem được chỉ định một tên khác với tên của cột mà từ đó nó được dẫn xuất. Tên cột cũng có thể được chỉ định trong câu lệnh SELECT.

Nếu cột không được chỉ định, các cột chế độ xem có cùng tên với các cột trong câu lệnh SELECT.

Lưu ý

Trong các cột cho chế độ xem, quyền đối với tên cột áp dụng cho câu lệnh TẠO CHẾ ĐỘ XEM hoặc CHẾ ĐỘ XEM, bất kể nguồn dữ liệu cơ bản là gì. Ví dụ: nếu quyền được cấp trên cột SalesOrderID trong câu lệnh TẠO CHẾ ĐỘ XEM, thì một câu lệnh CHẾ ĐỘ XEM có thể đặt tên cột SalesOrderID bằng một tên cột khác, chẳng hạn như OrderRef và vẫn có các quyền được liên kết với chế độ xem bằng cách sử dụng SalesOrderID .

AS

Chỉ định các hành động mà chế độ xem sẽ thực hiện.

select_statement
Là câu lệnh SELECT xác định khung nhìn. Câu lệnh có thể sử dụng nhiều hơn một bảng và các dạng xem khác. Cần có các quyền thích hợp để chọn từ các đối tượng được tham chiếu trong mệnh đề CHỌN của chế độ xem được tạo.

Một dạng xem không nhất thiết phải là một tập hợp con đơn giản của các hàng và cột của một bảng cụ thể. Có thể tạo một chế độ xem sử dụng nhiều bảng hoặc các chế độ xem khác với mệnh đề SELECT có bất kỳ độ phức tạp nào.

Trong định nghĩa dạng xem được lập chỉ mục, câu lệnh SELECT phải là một câu lệnh bảng duy nhất hoặc một JOIN nhiều bảng với tập hợp tùy chọn.

Các mệnh đề SELECT trong định nghĩa chế độ xem không được bao gồm những điều sau:

  • Mệnh đề ORDER BY, trừ khi cũng có mệnh đề TOP trong danh sách lựa chọn của câu lệnh SELECT

    Quan trọng

    Mệnh đề ORDER BY chỉ được sử dụng để xác định các hàng được trả về bởi mệnh đề TOP hoặc OFFSET trong định nghĩa dạng xem. Mệnh đề ORDER BY không đảm bảo kết quả theo thứ tự khi chế độ xem được truy vấn, trừ khi ORDER BY cũng được chỉ định trong chính truy vấn.

  • Từ khoá INTO

  • Điều khoản TÙY CHỌN

  • Tham chiếu đến một bảng tạm thời hoặc một biến bảng.

Vì select_statement sử dụng câu lệnh SELECT nên việc sử dụng & lt; join_hint & gt; và & lt; table_hint & gt; gợi ý như được chỉ định trong mệnh đề FROM. Để biết thêm thông tin, hãy xem FROM (Transact-SQL) SELECT (Transact-SQL) .

Có thể sử dụng các hàm và nhiều câu lệnh SELECT được phân tách bằng UNION hoặc UNION ALL trong select_statement.

KIỂM TRA LỰA CHỌN

Buộc tất cả các câu lệnh sửa đổi dữ liệu được thực thi đối với chế độ xem tuân theo các tiêu chí được đặt trong select_statement. Khi một hàng được sửa đổi trong một chế độ xem, TÙY CHỌN CÓ KIỂM TRA đảm bảo dữ liệu vẫn hiển thị trong chế độ xem sau khi thực hiện sửa đổi.

Lưu ý

TÙY CHỌN KIỂM TRA chỉ áp dụng cho các cập nhật được thực hiện thông qua chế độ xem. Nó không có khả năng áp dụng cho bất kỳ cập nhật nào được thực hiện trực tiếp cho các bảng bên dưới của chế độ xem.

THAM GIA

Áp dụng cho : SQL Server 2008 trở lên và Cơ sở dữ liệu Azure SQL.

Mã hóa các mục nhập trong sys.syscomments có chứa văn bản của câu lệnh TẠO CHẾ ĐỘ XEM. Việc sử dụng WITH ENCRYPTION ngăn chế độ xem được xuất bản như một phần của quá trình sao chép SQL Server.

SCHEMABINDING

Liên kết chế độ xem với lược đồ của bảng hoặc các bảng bên dưới. Khi SCHEMABINDING được chỉ định, bảng cơ sở hoặc các bảng không thể được sửa đổi theo cách có thể ảnh hưởng đến định nghĩa dạng xem. Bản thân định nghĩa dạng xem trước tiên phải được sửa đổi hoặc loại bỏ để loại bỏ các phần phụ thuộc vào bảng sẽ được sửa đổi. Khi bạn sử dụng SCHEMABINDING, select_statement phải bao gồm tên hai phần (đối tượng . lược đồ) của bảng, dạng xem hoặc hàm do người dùng xác định được tham chiếu. Tất cả các đối tượng được tham chiếu phải nằm trong cùng một cơ sở dữ liệu.

Không thể loại bỏ các chế độ xem hoặc bảng tham gia vào một chế độ xem được tạo bằng mệnh đề SCHEMABINDING trừ khi chế độ xem đó bị loại bỏ hoặc thay đổi để nó không còn ràng buộc lược đồ nữa. Nếu không, Cơ sở dữ liệu sẽ tạo ra lỗi. Ngoài ra, việc thực thi các câu lệnh ALTER TABLE trên các bảng tham gia vào các dạng xem có liên kết lược đồ không thành công khi các câu lệnh này ảnh hưởng đến định nghĩa dạng xem.

Lưu ý

Trong Azure Synapse Analytics, các chế độ xem hiện không hỗ trợ liên kết giản đồ. Để biết thêm thông tin, hãy xem T-SQL views với nhóm SQL chuyên dụng và nhóm SQL không máy chủ trong Azure Synapse Analytics .

VIEW_METADATA

Chỉ định rằng phiên bản của SQL Server sẽ trả về cho các API DB-Thư viện, ODBC và OLE DB thông tin siêu dữ liệu về chế độ xem, thay vì bảng cơ sở hoặc các bảng, khi siêu dữ liệu ở chế độ duyệt được yêu cầu cho một truy vấn tham chiếu đến chế độ xem. Siêu dữ liệu ở chế độ duyệt là siêu dữ liệu bổ sung mà phiên bản của SQL Server trả về cho các API phía máy khách này. Siêu dữ liệu này cho phép các API phía máy khách triển khai các con trỏ phía máy khách có thể cập nhật. Siêu dữ liệu ở chế độ duyệt bao gồm thông tin về bảng cơ sở chứa các cột trong tập kết quả.

Đối với các chế độ xem được tạo bằng VIEW_METADATA, siêu dữ liệu chế độ duyệt trả về tên chế độ xem chứ không phải tên bảng cơ sở khi nó mô tả các cột từ chế độ xem trong tập kết quả.

Khi một chế độ xem được tạo bằng cách sử dụng WITH VIEW_METADATA, tất cả các cột của nó, ngoại trừ cột dấu thời gian , đều có thể cập nhật nếu chế độ xem có kích hoạt INSTEAD OF INSERT hoặc INSTEAD OF UPDATE. Để biết thêm thông tin về các chế độ xem có thể cập nhật, hãy xem Chú thích.

Nhận xét

Một dạng xem chỉ có thể được tạo trong cơ sở dữ liệu hiện tại. CHẾ ĐỘ XEM TẠO phải là câu lệnh đầu tiên trong lô truy vấn. Một chế độ xem có thể có tối đa 1.024 cột.

Khi truy vấn thông qua một dạng xem, Công cụ cơ sở dữ liệu sẽ kiểm tra để đảm bảo rằng tất cả các đối tượng cơ sở dữ liệu được tham chiếu ở bất kỳ đâu trong câu lệnh đều tồn tại và chúng hợp lệ trong ngữ cảnh của câu lệnh và rằng các câu lệnh sửa đổi dữ liệu không vi phạm bất kỳ tính toàn vẹn nào của dữ liệu quy tắc. Việc kiểm tra không thành công sẽ trả về một thông báo lỗi. Việc kiểm tra thành công sẽ chuyển hành động này thành một hành động đối với bảng hoặc các bảng bên dưới.

Xem Thêm  Xóa một mục khỏi danh sách Python (bật, xóa, xóa, xóa) • datagy - xóa khỏi danh sách python

Nếu một chế độ xem phụ thuộc vào một bảng hoặc chế độ xem đã bị loại bỏ, Công cụ Cơ sở dữ liệu sẽ tạo ra thông báo lỗi khi bất kỳ ai cố gắng sử dụng chế độ xem. Nếu một bảng hoặc chế độ xem mới được tạo và cấu trúc bảng không thay đổi so với bảng cơ sở trước đó để thay thế bảng hoặc chế độ xem đã bị loại bỏ, thì chế độ xem lại có thể sử dụng được. Nếu bảng hoặc cấu trúc chế độ xem mới thay đổi, chế độ xem phải được xóa và tạo lại.

Nếu một chế độ xem không được tạo bằng mệnh đề SCHEMABINDING, hãy chạy sp_refreshview khi các thay đổi được thực hiện đối với các đối tượng bên dưới chế độ xem ảnh hưởng đến định nghĩa của chế độ xem. Nếu không, chế độ xem có thể tạo ra kết quả không mong muốn khi nó được truy vấn.

Khi một chế độ xem được tạo, thông tin về chế độ xem được lưu trữ trong các chế độ xem danh mục sau: sys.views , sys.columns sys.sql_expression_dependencies . Văn bản của câu lệnh CREATE VIEW được lưu trữ trong chế độ xem danh mục sys.sql_modules .

Truy vấn sử dụng chỉ mục trên chế độ xem được xác định bằng biểu thức số hoặc float có thể có kết quả khác với truy vấn tương tự không sử dụng chỉ mục trên quang cảnh. Sự khác biệt này có thể do lỗi làm tròn trong khi thực hiện các thao tác CHÈN, XÓA hoặc CẬP NHẬT trên các bảng bên dưới.

Công cụ cơ sở dữ liệu lưu cài đặt của SET QUOTED_IDENTIFIER và SET ANSI_NULLS khi một dạng xem được tạo. Các cài đặt gốc này được sử dụng để phân tích cú pháp khi chế độ xem được sử dụng. Do đó, bất kỳ cài đặt phiên khách nào cho SET QUOTED_IDENTIFIER và SET ANSI_NULLS không ảnh hưởng đến định nghĩa chế độ xem khi chế độ xem được truy cập.

Các chế độ xem có thể cập nhật

Bạn có thể sửa đổi dữ liệu của bảng cơ sở bên dưới thông qua một chế độ xem, miễn là các điều kiện sau là đúng:

  • Bất kỳ sửa đổi nào, bao gồm câu lệnh UPDATE, INSERT và DELETE, phải tham chiếu đến các cột chỉ từ một bảng cơ sở.

  • Các cột đang được sửa đổi trong dạng xem phải tham chiếu trực tiếp đến dữ liệu cơ bản trong các cột của bảng. Các cột không thể được dẫn xuất theo bất kỳ cách nào khác, chẳng hạn như thông qua như sau:

    • Một hàm tổng hợp: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR và VARP.

    • Một phép tính. Không thể tính toán cột từ một biểu thức sử dụng các cột khác. Các cột được tạo bằng cách sử dụng các toán tử tập hợp UNION, UNION ALL, CROSSJOIN, EXCEPT và INTERSECT tương ứng với một phép tính và cũng không thể cập nhật được.

  • Các cột đang được sửa đổi không bị ảnh hưởng bởi các mệnh đề GROUP BY, HAVING hoặc DISTINCT.

  • TOP không được sử dụng ở bất kỳ đâu trong select_statement của chế độ xem cùng với mệnh đề VỚI CHỌN KIỂM TRA.

Các hạn chế trước đây áp dụng cho bất kỳ truy vấn con nào trong mệnh đề FROM của chế độ xem, cũng giống như chúng áp dụng cho chính chế độ xem. Nói chung, Công cụ cơ sở dữ liệu phải có khả năng theo dõi rõ ràng các sửa đổi từ định nghĩa chế độ xem đến một bảng cơ sở. Để biết thêm thông tin, hãy xem Sửa đổi dữ liệu qua một chế độ xem .

Nếu các hạn chế trước đó ngăn bạn sửa đổi dữ liệu trực tiếp thông qua một chế độ xem, hãy xem xét các tùy chọn sau:

  • INSTEAD OF Trigger

    INSTEAD OF kích hoạt có thể được tạo trên một chế độ xem để làm cho một chế độ xem có thể cập nhật được. Trình kích hoạt INSTEAD OF được thực thi thay cho câu lệnh sửa đổi dữ liệu mà trên đó trình kích hoạt được xác định. Trình kích hoạt này cho phép người dùng chỉ định tập hợp các hành động phải xảy ra để xử lý câu lệnh sửa đổi dữ liệu. Do đó, nếu kích hoạt INSTEAD OF tồn tại cho một dạng xem trên một câu lệnh sửa đổi dữ liệu cụ thể (INSERT, UPDATE hoặc DELETE), dạng xem tương ứng có thể cập nhật thông qua câu lệnh đó. Để biết thêm thông tin về INSTEAD OF trình kích hoạt, hãy xem Trình kích hoạt DML .

  • Chế độ xem được phân vùng

    Nếu dạng xem là dạng xem được phân vùng, dạng xem có thể cập nhật được, tuân theo các hạn chế nhất định. Khi cần, Công cụ cơ sở dữ liệu phân biệt các dạng xem được phân vùng cục bộ là dạng xem trong đó tất cả các bảng tham gia và dạng xem nằm trên cùng một phiên bản của SQL Server và dạng xem được phân vùng phân tán là dạng xem trong đó có ít nhất một trong các bảng trong dạng xem nằm trên một máy chủ khác hoặc máy chủ từ xa.

Chế độ xem được phân vùng

Dạng xem phân vùng là dạng xem được xác định bởi UNION TẤT CẢ các bảng thành viên được cấu trúc theo cùng một cách, nhưng được lưu trữ riêng biệt dưới dạng nhiều bảng trong cùng một phiên bản của SQL Server hoặc trong một nhóm các phiên bản tự trị của máy chủ SQL Server, được gọi là máy chủ cơ sở dữ liệu liên kết.

Lưu ý

Phương pháp ưa thích để phân vùng dữ liệu cục bộ đến một máy chủ là thông qua các bảng được phân vùng. Để biết thêm thông tin, hãy xem Bảng và chỉ mục được phân vùng .

Khi thiết kế một lược đồ phân vùng, phải rõ ràng dữ liệu thuộc về mỗi phân vùng. Ví dụ: dữ liệu cho bảng Khách hàng được phân phối trong ba bảng thành viên ở ba vị trí máy chủ: Khách hàng_33 trên Máy chủ1 , Khách hàng_66 < / code> trên Server2 Customer_99 trên Server3 .

Chế độ xem được phân vùng trên Server1 được xác định theo cách sau:

 - Chế độ xem được phân vùng như được xác định trên Server1
TẠO KHÁCH HÀNG XEM
BẰNG 
--Chọn từ bảng thành viên cục bộ.
LỰA CHỌN *
FROM CompanyData.dbo.Customers_33
ĐOÀN KẾT TẤT CẢ
--Chọn từ bảng thành viên trên Server2.
LỰA CHỌN *
FROM Server2.CompanyData.dbo.Customers_66
ĐOÀN KẾT TẤT CẢ
--Chọn từ bảng thành viên trên Server3.
LỰA CHỌN *
TỪ Server3.CompanyData.dbo.Customers_99;
 

Nói chung, một chế độ xem được cho là một chế độ xem được phân vùng nếu nó có dạng sau:

  CHỌN & lt; select_list1 & gt;
TỪ T1
ĐOÀN KẾT TẤT CẢ
CHỌN & lt; select_list2 & gt;
TỪ T2
ĐOÀN KẾT TẤT CẢ
...
CHỌN & lt; select_listn & gt;
TỪ Tn;
 

Điều kiện để tạo Chế độ xem được phân vùng

  1. Chọn danh sách

    • Trong danh sách cột của định nghĩa chế độ xem, hãy chọn tất cả các cột trong các bảng thành viên.

    • Đảm bảo rằng các cột ở cùng vị trí thứ tự của mỗi danh sách select đều thuộc cùng một loại, bao gồm cả các đối chiếu. Không đủ để các cột là loại có thể chuyển đổi hoàn toàn, như trường hợp của UNION nói chung.

      Ngoài ra, ít nhất một cột (ví dụ: & lt; col & gt; ) phải xuất hiện trong tất cả các danh sách đã chọn ở cùng một vị trí thứ tự. Xác định & lt; col & gt; theo cách mà các bảng thành viên T1, ..., Tn có ràng buộc CHECK C1, ..., Cn được xác định trên & lt; col & gt; , tương ứng.

      Ràng buộc C1 được xác định trên bảng T1 phải có dạng sau:

        C1 :: = & lt; simple_interval & gt; [HOẶC & lt; simple_interval & gt; HOẶC ...]
      & lt; simple_interval & gt; :: =
      & lt; col & gt; {& lt; | & gt; | \ & lt; = | & gt; = | = & lt; giá trị & gt;}
      | & lt; col & gt; GIỮA & lt; value1 & gt; VÀ & lt; value2 & gt;
      | & lt; col & gt; IN (value_list)
      | & lt; col & gt; {& gt; | & gt; =} & lt; value1 & gt; VÀ
      & lt; col & gt; {& lt; | & lt; =} & lt; value2 & gt;
       
    • Các ràng buộc phải theo cách mà bất kỳ giá trị cụ thể nào của & lt; col & gt; có thể thỏa mãn tối đa một trong các ràng buộc C1, ..., Cn để các ràng buộc tạo thành một tập hợp các khoảng rời rạc hoặc không trùng lặp. Cột & lt; col & gt; mà trên đó xác định các ràng buộc rời rạc được gọi là cột phân vùng. Lưu ý rằng cột phân vùng có thể có các tên khác nhau trong các bảng bên dưới. Các ràng buộc phải ở trạng thái được kích hoạt và đáng tin cậy để chúng đáp ứng các điều kiện đã đề cập trước đó của cột phân vùng. Nếu các ràng buộc bị tắt, hãy bật lại kiểm tra ràng buộc bằng cách sử dụng tùy chọn CHECK CONSTRAINT bind_name của ALTER TABLE và sử dụng tùy chọn WITH CHECK để xác thực chúng.

      Các ví dụ sau đây cho thấy các tập hợp ràng buộc hợp lệ:

        {[col & lt; 10], [col từ 11 đến 20], [col & gt; 20]}
      {[col từ 11 đến 20], [col từ 21 đến 30], [col từ 31 đến 100]}
       
    • Không thể sử dụng cùng một cột nhiều lần trong danh sách đã chọn.

  2. Cột phân vùng

    • Cột phân vùng là một phần của TỪ KHÓA CHÍNH của bảng.

    • Nó không thể là cột được tính toán, danh tính, mặc định hoặc dấu thời gian .

    • Nếu có nhiều hơn một ràng buộc trên cùng một cột trong một bảng thành viên, Công cụ Cơ sở dữ liệu sẽ bỏ qua tất cả các ràng buộc và không xem xét chúng khi xác định xem dạng xem có phải là dạng xem được phân vùng hay không. Để đáp ứng các điều kiện của dạng xem được phân vùng, hãy đảm bảo rằng chỉ có một ràng buộc phân vùng trên cột phân vùng.

    • Không có hạn chế nào về khả năng cập nhật của cột phân vùng.

  3. Các bảng thành viên hoặc các bảng cơ bản T1, ..., Tn

    • Các bảng có thể là bảng cục bộ hoặc bảng từ các máy tính khác đang chạy SQL Server được tham chiếu qua tên gồm bốn phần hoặc tên dựa trên OPENDATASOURCE- hoặc OPENROWSET. Cú pháp OPENDATASOURCE và OPENROWSET có thể chỉ định tên bảng, nhưng không phải là một truy vấn chuyển qua. Để biết thêm thông tin, hãy xem OPENDATASOURCE (Transact-SQL) OPENROWSET (Transact-SQL) .

      Nếu một hoặc nhiều bảng thành viên ở xa, dạng xem được gọi là dạng xem được phân vùng phân tán và áp dụng các điều kiện bổ sung. Chúng được mô tả sau trong phần này.

    • Cùng một bảng không thể xuất hiện hai lần trong tập hợp các bảng được kết hợp với câu lệnh UNION ALL.

    • Các bảng thành viên không được tạo chỉ mục trên các cột được tính toán trong bảng.

    • Các bảng thành viên có tất cả các ràng buộc CHÍNH CHÍNH trên cùng một số cột.

    • Tất cả các bảng thành viên trong dạng xem có cùng cài đặt phần đệm ANSI. Điều này có thể được đặt bằng cách sử dụng tùy chọn người dùng trong sp_configure hoặc câu lệnh SET.

Điều kiện để sửa đổi dữ liệu trong chế độ xem được phân vùng

Các hạn chế sau áp dụng cho các câu lệnh sửa đổi dữ liệu trong các dạng xem được phân vùng:

  • Câu lệnh INSERT cung cấp giá trị cho tất cả các cột trong dạng xem, ngay cả khi các bảng thành viên bên dưới có ràng buộc DEFAULT cho các cột đó hoặc nếu chúng cho phép giá trị rỗng. Đối với những cột trong bảng thành viên có định nghĩa DEFAULT, các câu lệnh không thể sử dụng từ khóa DEFAULT một cách rõ ràng.

  • Giá trị đang được chèn vào cột phân vùng đáp ứng ít nhất một trong các ràng buộc cơ bản; nếu không, hành động chèn sẽ không thành công do vi phạm ràng buộc.

  • Câu lệnh UPDATE không thể chỉ định từ khóa DEFAULT làm giá trị trong mệnh đề SET, ngay cả khi cột có giá trị DEFAULT được xác định trong bảng thành viên tương ứng.

  • Không thể sửa đổi các cột trong dạng xem là cột nhận dạng trong một hoặc nhiều bảng thành viên bằng cách sử dụng câu lệnh CHÈN hoặc CẬP NHẬT.

  • Nếu một trong các bảng thành viên chứa cột dấu thời gian , không thể sửa đổi dữ liệu bằng cách sử dụng câu lệnh INSERT hoặc UPDATE.

  • Nếu một trong các bảng thành viên có chứa trình kích hoạt hoặc ràng buộc ON UPDATE CASCADE / SET NULL / SET DEFAULT hoặc ON DELETE CASCADE / SET NULL / SET DEFAULT, không thể sửa đổi chế độ xem.

  • Các hành động CHÈN, CẬP NHẬT và XÓA đối với chế độ xem được phân vùng không được phép nếu có một phép tự kết hợp với cùng một chế độ xem hoặc với bất kỳ bảng thành viên nào trong câu lệnh.

  • Nhập hàng loạt dữ liệu vào chế độ xem được phân vùng không được hỗ trợ bởi bcp hoặc BULK INSERT và INSERT ... SELECT * FROM OPENROWSET (BULK ...). Tuy nhiên, bạn có thể chèn nhiều hàng vào chế độ xem được phân vùng bằng cách sử dụng câu lệnh INSERT .

    Lưu ý

    Để cập nhật dạng xem được phân vùng, người dùng phải có quyền CHÈN, CẬP NHẬT và XÓA trên các bảng thành viên.

Các điều kiện bổ sung cho các chế độ xem được phân vùng được phân tán

Đối với dạng xem được phân vùng phân tán (khi một hoặc nhiều bảng thành viên ở xa), các điều kiện bổ sung sau sẽ được áp dụng:

  • Một giao dịch phân tán sẽ được bắt đầu để đảm bảo tính nguyên tử trên tất cả các nút bị ảnh hưởng bởi bản cập nhật.

  • Đặt tùy chọn XACT_ABORT SET thành BẬT để các câu lệnh INSERT, UPDATE hoặc DELETE hoạt động.

  • Bất kỳ cột nào trong bảng từ xa thuộc loại smallmoney được tham chiếu trong chế độ xem được phân vùng đều được ánh xạ dưới dạng tiền . Do đó, các cột tương ứng (ở cùng vị trí thứ tự trong danh sách đã chọn) trong bảng cục bộ cũng phải thuộc loại tiền .

  • Dưới mức độ tương thích cơ sở dữ liệu 110 trở lên, bất kỳ cột nào trong bảng từ xa thuộc loại smalldatetime được tham chiếu trong chế độ xem được phân vùng đều được ánh xạ dưới dạng smalldatetime . Các cột tương ứng (ở cùng một vị trí thứ tự trong danh sách đã chọn) trong bảng cục bộ phải là smalldatetime . Đây là một thay đổi về hành vi so với các phiên bản SQL Server trước đó, trong đó bất kỳ cột nào trong bảng từ xa thuộc loại smalldatetime được tham chiếu trong chế độ xem được phân vùng đều được ánh xạ dưới dạng datetime và các cột tương ứng trong các bảng cục bộ phải thuộc loại datetime . Để biết thêm thông tin, hãy xem Mức độ tương thích của CƠ SỞ DỮ LIỆU ALTER (Giao dịch-SQL) .

  • Mọi máy chủ được liên kết trong dạng xem được phân vùng không thể là máy chủ được liên kết lặp lại. Đây là một máy chủ được liên kết trỏ đến cùng một phiên bản của SQL Server.

Cài đặt của tùy chọn SET ROWCOUNT bị bỏ qua đối với các hành động CHÈN, CẬP NHẬT và XÓA liên quan đến chế độ xem được phân vùng có thể cập nhật và bảng từ xa.

Khi các bảng thành viên và định nghĩa dạng xem được phân vùng có sẵn, trình tối ưu hóa truy vấn SQL Server sẽ xây dựng các kế hoạch thông minh sử dụng các truy vấn một cách hiệu quả để truy cập dữ liệu từ các bảng thành viên. Với định nghĩa ràng buộc CHECK, bộ xử lý truy vấn ánh xạ sự phân bố của các giá trị khóa trên các bảng thành viên. Khi người dùng đưa ra một truy vấn, bộ xử lý truy vấn sẽ so sánh bản đồ với các giá trị được chỉ định trong mệnh đề WHERE và xây dựng một kế hoạch thực thi với lượng truyền dữ liệu tối thiểu giữa các máy chủ thành viên. Do đó, mặc dù một số bảng thành viên có thể được đặt trong các máy chủ từ xa, phiên bản của SQL Server giải quyết các truy vấn phân tán để lượng dữ liệu phân tán phải được chuyển là tối thiểu.

Cân nhắc để nhân rộng

Để tạo các dạng xem được phân vùng trên các bảng thành viên có liên quan đến việc sao chép, các lưu ý sau sẽ được áp dụng:

  • Nếu các bảng bên dưới có liên quan đến việc tái tạo hợp nhất hoặc sao chép giao dịch với việc cập nhật đăng ký, hãy đảm bảo rằng cột mã bảo mật duy nhất cũng được bao gồm trong danh sách đã chọn.

    Mọi hành động CHÈN vào chế độ xem được phân vùng phải cung cấp giá trị NEWID () cho cột uniqueidentifier . Bất kỳ hành động CẬP NHẬT nào đối với cột uniqueidentifier phải cung cấp giá trị NEWID () vì không thể sử dụng từ khóa DEFAULT.

  • Việc sao chép các bản cập nhật được thực hiện bằng cách sử dụng chế độ xem cũng giống như khi các bảng được sao chép trong hai cơ sở dữ liệu khác nhau: các bảng được cung cấp bởi các tác nhân sao chép khác nhau và thứ tự của các bản cập nhật không được đảm bảo.

Quyền

Yêu cầu quyền TẠO CHẾ ĐỘ XEM trong cơ sở dữ liệu và quyền ALTER trên lược đồ mà chế độ xem đang được tạo.

Ví dụ

Các ví dụ sau sử dụng cơ sở dữ liệu AdventureWorks 2012 hoặc AdventureWorksDW.

A. Sử dụng một TẠO CHẾ ĐỘ XEM đơn giản

Ví dụ sau tạo một dạng xem bằng cách sử dụng câu lệnh SELECT đơn giản. Chế độ xem đơn giản rất hữu ích khi kết hợp các cột được truy vấn thường xuyên. Dữ liệu từ chế độ xem này đến từ các bảng HumanResources.Eprisee Person.Person của cơ sở dữ liệu AdventureWorks2012. Dữ liệu cung cấp thông tin tên và ngày thuê cho các nhân viên của Adventure Works Cycles. Chế độ xem có thể được tạo cho người phụ trách theo dõi các ngày kỷ niệm công việc nhưng không cấp cho người này quyền truy cập vào tất cả dữ liệu trong các bảng này.

  TẠO CHẾ ĐỘ XEM Rentate_view
BẰNG 
CHỌN p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
TỪ Nguồn nhân lực. Người lao động e
THAM GIA Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID;
ĐI
  
 

B. Sử dụng VỚI ENCRYPTION

Ví dụ sau sử dụng tùy chọn WITH ENCRYPTION và hiển thị các cột được tính toán, các cột đã đổi tên và nhiều cột.

Áp dụng cho : SQL Server 2008 trở lên và Cơ sở dữ liệu SQL.

  TẠO CHẾ ĐỘ XEM Mua hàng.PurchaseOrderReject
CÓ TÍCH LŨY
BẰNG 
CHỌN PurchaseOrderID, ReceivedQty, RejectedQty,
    RejectedQty / ReceivedQty AS RejectRatio, DueDate
TỪ Mua hàng. Mua hàngĐặt hàngDetail
WHERE RejectedQty / ReceivedQty & gt; 0
VÀ Ngày đến hạn & gt; CHUYỂN ĐỔI (DATETIME, '20010630', 101);
ĐI
  
 

C. Sử dụng VỚI LỰA CHỌN KIỂM TRA

Ví dụ sau đây cho thấy một chế độ xem có tên SeattleOnly tham chiếu đến năm bảng và cho phép sửa đổi dữ liệu chỉ áp dụng cho nhân viên sống ở Seattle.

  TẠO CHẾ ĐỘ XEM dbo.SeattleOnly
BẰNG 
CHỌN p.LastName, p.FirstName, e.JobTitle, a.City, sp.StateProvinceCode
TỪ Nguồn nhân lực. Người lao động e
Người tham gia INNER. Người p
ON p.BusinessEntityID = e.BusinessEntityID
    INNER JOIN Person.BusinessEntityAddress mỏ
    BẬT mỏ.BusinessEntityID = e.BusinessEntityID
    INNER JOIN Person.Địa chỉ
    ON a.AddressID = bea.AddressID
    INNER JOIN Person.StateProvince sp
    ON sp.StateProvinceID = a.StateProvinceID
WHERE a.City = 'Seattle'
VỚI LỰA CHỌN KIỂM TRA;
ĐI
 

D. Sử dụng các chức năng tích hợp trong chế độ xem

Ví dụ sau đây cho thấy một định nghĩa dạng xem bao gồm một hàm tích hợp. Khi sử dụng các hàm, bạn phải chỉ định tên cột cho cột dẫn xuất.

  TẠO XEM Sales.SalesPersonPerform
BẰNG 
CHỌN ĐẦU (100) SalesPersonID, SUM (TotalDue) AS TotalSales
TỪ Sales.SalesOrderHeader
Nơi đặt hàng Ngày & gt; CHUYỂN ĐỔI (DATETIME, '20001231', 101)
NHÓM THEO SalesPersonID;
ĐI

 

E. Sử dụng dữ liệu được phân vùng

Ví dụ sau sử dụng các bảng có tên SUPPLY1 , SUPPLY2 , SUPPLY3 SUPPLY4 . Các bảng này tương ứng với các bảng của nhà cung cấp từ bốn văn phòng, đặt tại các quốc gia / khu vực khác nhau.

 - Tạo bảng và chèn giá trị.
TẠO BẢNG dbo.SUPPLY1 (
SupplyID INT KIỂM TRA CHÍNH CHÍNH (cung cấp GIỮA 1 và 150),
nhà cung cấp CHAR (50)
);
TẠO BẢNG dbo.SUPPLY2 (
supplyID INT KIỂM TRA CHÍNH CHÍNH (cung cấp GIỮA 151 và 300),
nhà cung cấp CHAR (50)
);
TẠO BẢNG dbo.SUPPLY3 (
SupplyID INT KIỂM TRA PHÍM CHÍNH (cung cấp GIỮA 301 và 450),
nhà cung cấp CHAR (50)
);
TẠO BẢNG dbo.SUPPLY4 (
cung cấpID INT KIỂM TRA KHÓA CHÍNH (cung cấp GIỮA 451 và 600),
nhà cung cấp CHAR (50)
);
ĐI
--Tạo chế độ xem kết hợp tất cả các bảng của nhà cung cấp.
TẠO CHẾ ĐỘ XEM dbo.all_supplier_view
VỚI SCHEMABINDING
BẰNG 
CHỌN ID cung cấp, nhà cung cấp
  TỪ dbo.SUPPLY1
ĐOÀN KẾT TẤT CẢ
CHỌN ID cung cấp, nhà cung cấp
  TỪ dbo.SUPPLY2
ĐOÀN KẾT TẤT CẢ
CHỌN ID cung cấp, nhà cung cấp
  TỪ dbo.SUPPLY3
ĐOÀN KẾT TẤT CẢ
CHỌN ID cung cấp, nhà cung cấp
  TỪ dbo.SUPPLY4;
ĐI
CHÈN dbo.all_supplier_view VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd')
, ('231', 'FarEast'), ('280', 'NZ')
, ('321', 'EuroGroup'), ('442', 'UKArchip')
, ('475', 'Ấn Độ'), ('521', 'Afrique');
ĐI
 

Ví dụ: Phân tích Azure Synapse và Hệ thống Nền tảng Analytics (PDW)

F. Tạo một chế độ xem đơn giản

Ví dụ sau tạo chế độ xem bằng cách chỉ chọn một số cột từ bảng nguồn.

  TẠO CHẾ ĐỘ XEM DimEaffeeBirthDates AS
CHỌN FirstName, LastName, BirthDate
TỪ DimE NHÂN VIÊN;
 

G. Tạo chế độ xem bằng cách ghép hai bảng

Ví dụ sau tạo một dạng xem bằng cách sử dụng câu lệnh SELECT với OUTER JOIN . Kết quả của truy vấn kết hợp sẽ điền vào chế độ xem.

  TẠO CHẾ ĐỘ XEM view1
BẰNG 
CHỌN fis.CustomerKey, fis.ProductKey, fis.OrderDateKey,
  fis.SalesTerritoryKey, dst.SalesTerritoryRegion
TỪ FactInternetSales AS cá
TRÁI RA NGOÀI THAM GIA DimSalesTerritory AS dst
BẬT (fis.SalesTerritoryKey = dst.SalesTerritoryKey);
 

Xem thêm

BẢNG ĐIỀU KHIỂN (Transact-SQL)
ALTER VIEW (Transact-SQL)
XÓA (Giao dịch-SQL)
DROP VIEW (Transact-SQL)
INSERT (Transact-SQL)
Tạo quy trình được lưu trữ
sys.dm_sql_referenced_entities (Transact-SQL)
sys.dm_sql_referencing_entities (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_refreshview (Transact-SQL)
sp_rename (Transact-SQL)
sys.views (Transact-SQL)
CẬP NHẬT (Giao dịch-SQL)
EVENTDATA (Transact-SQL)


Xem thêm những thông tin liên quan đến chủ đề t-sql tạo chế độ xem ví dụ

Debugging sql server stored procedures

  • Tác giả: kudvenkat
  • Ngày đăng: 2015-09-28
  • Đánh giá: 4 ⭐ ( 6327 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: debugging in ssms
    debugging t-sql code
    t sql debug stored procedure
    sql server management studio debug stored procedure
    how to debug t sql
    debug in sql server management studio

    In this video we will discuss how to debug stored procedures in SQL Server.

    Healthy diet is very important both for the body and mind. If you like Aarvi Kitchen recipes, please support by sharing, subscribing and liking our YouTube channel. Hope you can help.
    https://www.youtube.com/channel/UC7sEwIXM_YfAMyonQCrGfWA/?sub_confirmation=1

    Setting up the Debugger in SSMS : If you have connected to SQL Server using (local) or . (period), and when you start the debugger you will get the following error
    Unable to start T-SQL Debugging. Could not connect to computer.

    To fix this error, use the computer name to connect to the SQL Server instead of using (local) or .

    For the examples in this video we will be using the following stored procedure.
    Create procedure spPrintEvenNumbers
    @Target int
    as
    Begin
    Declare @StartNumber int
    Set @StartNumber = 1

    while(@StartNumber [ @Target)
    Begin
    If(@StartNumber%2 = 0)
    Begin
    Print @StartNumber
    End
    Set @StartNumber = @StartNumber + 1
    End
    Print 'Finished printing even numbers till ' + RTRIM(@Target)
    End

    Connect to SQL Server using your computer name, and then execute the above code to create the stored procedure. At this point, open a New Query window. Copy and paste the following T-SQL code to execute the stored procedure.

    DECLARE @TargetNumber INT
    SET @TargetNumber = 10
    EXECUTE spPrintEvenNumbers @TargetNumber
    Print 'Done'

    Starting the Debugger in SSMS : There are 2 ways to start the debugger
    1. In SSMS, click on the Debug Menu and select Start Debugging

    2. Use the keyboard shortcut ALT + F5

    At this point you should have the debugger running. The line that is about to be executed is marked with an yellow arrow

    Step Over, Step into and Step Out in SSMS : You can find the keyboard shortcuts in the Debug menu in SSMS.

    Let us understand what Step Over, Step into and Step Out does when debugging the following piece of code

    1. There is no difference when you STEP INTO (F11) or STEP OVER (F10) the code on LINE 2
    2. On LINE 3, we are calling a Stored Procedure. On this statement if we press F10 (STEP OVER), it won't give us the opportunity to debug the stored procedure code. To be able to debug the stored procedure code you will have to STEP INTO it by pressing F11.
    3. If the debugger is in the stored procedure, and you don't want to debug line by line with in that stored procedure, you can STEP OUT of it by pressing SHIFT + F11. When you do this, the debugger completes the execution of the stored procedure and waits on the next line in the main query, i.e on LINE 4 in this example.

    To stop debugging : There are 2 ways to stop debugging
    1. In SSMS, click on the Debug Menu and select Stop Debugging
    2. Use the keyboard shortcut SHIFT + F5

    Show Next Statement shows the next statement that the debugger is about to execute.
    Run to Cursor command executes all the statements in a batch up to the current cursor position

    Locals Window in SSMS : Displays the current values of variables and parameters

    If you cannot see the locals window or if you have closed it and if you want to open it, you can do so using the following menu option. Locals window is only available if you are in DEBUG mode.

    Watch Window in SSMS : Just like Locals window, Watch window is used to watch the values of variables. You can add and remove variables from the watch window. To add a variable to the Watch Window, right click on the variable and select "Add Watch" option from the context menu.

    Call Stack Window in SSMS : Allows you to navigate up and down the call stack to see what values your application is storing at different levels. It's an invaluable tool for determining why your code is doing what it's doing.

    Immediate Window in SSMS : Very helpful during debugging to evaluate expressions, and print variable values. To clear immediate window type ]cls and press enter.
    1. From the Debug menu

    2. From the Breakpoints window. To view Breakpoints window select Debug =] Windows =] Breakpoints or use the keyboard shortcut ALT + CTRL + B

    Conditional Breakpoint : Conditional Breakpoints are hit only when the specified condition is met. These are extremely useful when you have some kind of a loop and you want to break, only when the loop variable has a specific value (For example loop varible = 100).

    How to set a conditional break point in SSMS :
    1. Right click on the Breakpoint and select Condition from the context menu
    2. In the Breakpoint window specify the condition

    Text version of the video
    http://csharp-video-tutorials.blogspot.com/2015/09/debugging-sql-server-stored-procedures.html

    Slides
    http://csharp-video-tutorials.blogspot.com/2015/09/debugging-sql-server-stored-procedures_28.html

Chế độ xem SQL - không có biến?

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 6222 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Bạn nói đúng. Biến cục bộ không được phép trong chế độ XEM. Bạn có thể…

SQL - Sử dụng Chế độ xem

  • Tác giả: isolution.pro
  • Đánh giá: 3 ⭐ ( 6139 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Một khung nhìn chỉ là một câu lệnh SQL được lưu trữ trong cơ sở dữ liệu với một tên liên quan. Một khung nhìn thực sự là một thành phần của một bảng dưới dạng một truy vấn SQL được xác định trước. Một dạng xem có thể chứa tất cả các hàng của bảng hoặc chọn các hàng...

Mọi thông tin về các chế độ xem

  • Tác giả: forums.bsdinsight.com
  • Đánh giá: 4 ⭐ ( 4913 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mỗi chế độ xem cung cấp một góc nhìn độc đáo về công việc của bạn: trực quan hóa các nhiệm vụ trên danh sách, bảng hoặc lịch; xem tính liên kết của chúng...

Chế độ xem trong DBMS

  • Tác giả: vi.tutorialcup.com
  • Đánh giá: 4 ⭐ ( 1841 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chế độ xem - Chế độ xem là tập con của bảng. Chế độ xem cũng có tập hợp các bản ghi ở dạng hàng và cột.

[Tự học SQL] Tìm hiểu về câu lệnh View trong SQL

  • Tác giả: cafedev.vn
  • Đánh giá: 4 ⭐ ( 1941 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chúng ta sẽ tìm hiểu về câu lệnh view trong sql dùng để làm gì? và khi nào sẽ dùng nó và dùng nó như thế nào ngay trong bài nay..

Bài 2: Thực thi SQL (Transact SQL)

  • Tác giả: timoday.edu.vn
  • Đánh giá: 5 ⭐ ( 2802 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Giới thiệu cách thực thư SQL (T-SQL), các loại ngôn ngữ SQL, các thành phần trong câu lệnh SQL, cách thức thực thi câu lệnh SQL, câu lệnh thêm, sửa, xoá của SQL

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình