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

善用 SQL Server 同義詞簡化開發與重構

     編輯:關於SqlServer

SQL Server 2005 引入同義詞物件,允許為現有資料庫物件(資料表、視圖、函數、預存程序等)建立別名。這不僅能縮短程式碼,更能在物件參考之間建立抽象層,大幅降低維護與重構成本。

基本用法

假設有一張名為 VeryLongTableName_WithComplexPrefix 的資料表,可建立同義詞 TL:

CREATE SYNONYM TL FOR VeryLongTableName_WithComplexPrefix;

之後查詢即可簡寫為:

SELECT * FROM TL;

核心優勢:抽象層與位置透明

同義詞真正的威力在於解耦邏輯名稱與物理位置。例如:

  • 建立同義詞 SalesHistory 指向本地視圖。
  • >未來業務擴展,需將歷史資料移至獨立資料庫 SalesData,甚至透過連結伺服器存取遠端伺服器。
  • 只需 DROP SYNONYM SalesHistory; CREATE SYNONYM SalesHistory FOR SalesData.dbo.SalesHistory;(或 LinkedServer.SalesData.dbo.SalesHistory)。
  • 所有現有程式碼(報表、SP、函數)零修改即可繼續運作。

實戰案例:資料庫拆分不停機

情境:Inventory 資料庫中的 SalesHistory 資料表需移至新資料庫 SalesData,但大量現有程式碼參考該表,且專案期限緊迫。

  1. 將資料複製至 SalesData.dbo.SalesHistory。
  2. 重命名原表為 SalesHistory_Old(保留以驗證遺漏參考)。
  3. 在 Inventory 建立同義詞:
USE Inventory;
GO
CREATE SYNONYM SalesHistory FOR SalesData.dbo.SalesHistory;
GO

結果:所有對 Inventory..SalesHistory 的查詢、DML 操作自動導向新資料庫,開發時間從「修改所有程式碼」縮減為「建立一個同義詞」。

注意事項

  • 同義詞屬於資料庫層級物件,需在各資料庫個別建立。
  • 不支援 DDL 觸發器、條件約束、預設值等繫結操作。
  • 過度使用可能降低程式碼可讀性,建議建立命名慣例(如 syn_ 前綴)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved