首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 建立檢視表完整指南:語法、加密、約束與常見錯誤

     編輯:關於SqlServer

基本建立語法

CREATE VIEW view_name 
[ (column_alias [, ...n]) ] 
[ WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } [ , ...n ] ]
AS
SELECT select_list
[ WITH CHECK OPTION ];

實戰範例:加密與檢查選項

CREATE VIEW v_card_tr
WITH ENCRYPTION  -- 定義加密,隱藏定義文字
AS
SELECT TOP 10 cash AS cc 
FROM card_transaction 
WHERE SUBSTRING(entry_site, 1, 2) = N'站點'  -- 起始位置為 1
ORDER BY id DESC
WITH CHECK OPTION;  -- 透過 View 修改資料時必須符合 WHERE 條件

欄位別名兩種寫法

-- 寫法 1:SELECT 列別名
CREATE VIEW v_card_tr AS SELECT cash AS cc FROM ...;

-- 寫法 2:VIEW 定義欄位清單
CREATE VIEW v_card_tr (cc) AS SELECT cash FROM ...;

⚠️ 常見錯誤與注意事項

  1. TOP + ORDER BY 限制:只有在 SELECT 含 TOP 時才可使用 ORDER BY,否則報錯。
  2. WITH CHECK OPTION 只約束透過 View 的 DML:直接操作基底表不受限。
  3. SQL Server 2000 無 SUBSTR():請用 SUBSTRING()。
  4. SUBSTRING 參數細節:
    • 第 1 參數:欄位名不加引號。
    • 第 2 參數:起始位置,從 1 開始(非 0)。
    • 第 3 參數:長度。

修改與刪除 View

-- 修改 (保留權限)
ALTER VIEW v_card_tr
WITH ENCRYPTION
AS
SELECT TOP 10 cash AS cc FROM card_transaction ...;

-- 刪除
DROP VIEW v_card_tr;

進階選項說明

選項用途
ENCRYPTION隱藏 syscomments 定義,防反編譯
SCHEMABINDING綁定結構描述,基底表不可隨意變更欄位/刪除
VIEW_METADATA讓 ODBC/OLE DB 客戶端視為可更新資料表

善用 View 封裝商業邏輯、簡化權限管理,並搭配 SCHEMABINDING 確保結構穩定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved