共用方式為


修改資料分割檢視中的資料

更新: 2005 年 12 月 5 日

如果資料分割檢視無法更新,它便只能作為原始資料表的唯讀副本。可更新的資料分割檢視可以展現原始資料表的所有能力。

若檢視是一組 SELECT 陳述式,且其個別的結果集已使用 UNION ALL 陳述式合併成一個結果集,則會被視為可更新的資料分割檢視。每一個 SELECT 陳述式會參考一個 SQL Server 基底資料表。資料表可以是本機資料表,或是使用四個部份組成的名稱、OPENROWSET 函數或 OPENDATASOURCE 函數加以參考的連結資料表 (不可使用指定傳遞查詢的 OPENDATASOURCE 或 OPENROWSET 函數)。

此外,參考檢視的資料修改陳述式,必須遵循針對 INSERT、UPDATE 與 DELETE 陳述式所定義的規則。

若資料分割檢視是跨各個伺服器分散,請避免在基底資料表上使用觸發程序或串聯式動作。觸發程序或串聯式動作可能會對基礎資料有所變更,進而影響到檢視的定義。

唯有當使用者對於該檢視的每一份基礎資料表具有 CONTROL、ALTER、TAKE OWNERSHIP 或 VIEW DEFINITION 權限時,才可更新分散式資料分割檢視。如需詳細資訊,請參閱<疑難排解分散式資料分割檢視的中繼資料可見性>。

ms187067.note(zh-tw,SQL.90).gif附註:
您必須安裝 Microsoft SQL Server 2005 Enterprise Edition 或 Microsoft SQL Server 2005 Developer Edition,才能透過分散式資料分割檢視來修改資料。但在任何版本的 SQL Server 2005 上,您都可以透過本機資料分割檢視來修改資料。

INSERT 陳述式

INSERT 陳述式透過資料分割檢視將資料加入成員資料表。INSERT 陳述式必須遵循這些規則:

  • 所有資料行都必須包含在 INSERT 陳述式中,即使資料行在基底資料表中可以是 NULL,或基底資料表中已定義 DEFAULT 條件約束。
  • 不能在 INSERT 陳述式的 VALUES 子句中指定 DEFAULT 關鍵字。
  • INSERT 陳述式提供的數值必須滿足為成員資料表之一的資料分割資料行定義的 CHECK 條件約束邏輯。
  • 如果成員資料表中包含有識別屬性的資料行,就不允許使用 INSERT 陳述式。
  • 如果成員資料表中包含 timestamp 資料行,就不允許使用 INSERT 陳述式。
  • 如果有與同一個檢視或任何成員資料表關聯的自我聯結,就不允許使用 INSERT 陳述式。

UPDATE 陳述式

UPDATE 陳述式透過資料分割檢視修改一或多個成員資料表中的資料。UPDATE 陳述式必須遵循這些規則:

  • UPDATE 陳述式不能指定 DEFAULT 關鍵字作為 SET 子句中的值,即使資料行在對應的成員資料表中已定義 DEFAULT 值。
  • 不能變更含識別屬性的資料行:但是可以更新其他資料行。
  • 如果資料行包含 textimagentext 資料,則無法變更 PRIMARY KEY 的值。
  • 如果基底資料表中包含 timestamp 資料行,就不允許更新。
  • 如果有與同一個檢視或任何成員資料表關聯的自我聯結,就不允許更新。

DELETE 陳述式

DELETE 陳述式透過資料分割檢視刪除一或多個成員資料表中的資料。如果有與同一個檢視或任何成員資料表關聯的自我聯結,就不允許使用 DELETE 陳述式。

請參閱

概念

實作聯盟資料庫伺服器

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2005 年 12 月 5 日

新增內容:
  • 新增有關更新分散式資料分割檢視所需權限的資訊。
變更的內容:
  • 移除下列文字:「對於某部伺服器的本機資料分割檢視而言,若在一或多份成員資料表上定義了觸發程序或串聯式更新或刪除,檢視就無法更新」。