適用於:SQL Server
在許多情況下,您可以更新 [ 結果] 窗格 (Visual Database Tools) 中顯示的結果集。 不過,在某些情況下,您無法。
一般而言,若要更新結果, 查詢和檢視表設計工具 (Visual Database Tools) 必須有足夠的資訊來唯一識別數據表中的數據列。 例如,如果查詢在輸出清單中包含主鍵,這就是一個例子。 此外,您必須有足夠的許可權來更新資料庫。
如果您的查詢是以檢視為基礎,您可能可以更新它。 相同的指導方針會套用,不同之處在於它們會套用至檢視中的基礎表,而不只是套用至檢視本身。
注意事項
查詢和檢視表設計工具無法事先判斷您是否可以根據檢視來更新結果集。 因此,它會顯示所有檢視,即使您可能無法更新它們也一樣。
下表摘要說明您可能會和可能無法在 [結果] 窗格中更新查詢結果的特定實例。 在許多情況下,您所使用的資料庫會決定是否可以更新查詢結果。
| 查詢 | 結果可以更新嗎? |
|---|---|
| 根據輸出清單中的一個具有主鍵的數據表進行查詢 | 是(除非如下所列)。 |
| 根據沒有唯一索引且沒有主鍵的數據表進行查詢 | 取決於查詢和資料庫。 有些資料庫允許更新,如果有足夠的資訊可用來唯一識別記錄。 |
| 根據未聯結的多個數據表進行查詢 | 不。 |
| 根據資料庫中標示為唯讀的數據進行查詢 | 不。 |
| 根據包含一個沒有條件約束之數據表的檢視進行查詢 | 是(除非如下所列)。 |
| 根據一對一關係聯接的表格進行查詢 | 是(除非如下所列)。 |
| 根據與一對多關係連結的資料表進行查詢 | 通常。 |
| 根據具有多對多關係的三個或更多數據表來執行查詢 | 不。 |
| 根據未授與更新許可權的數據表進行查詢 | 可以刪除但無法更新。 |
| 根據未授與刪除許可權的數據表進行查詢 | 可以更新但無法刪除。 |
| 匯總查詢 | 不。 |
| 根據包含總計或聚合函數的子查詢進行查詢 | 不。 |
包含 DISTINCT 關鍵詞以排除重複行的查詢 |
不。 |
其 FROM 子句包含傳回數據表的使用者定義函式,而使用者定義函數包含多個 select 語句的查詢 |
不。 |
其 FROM 子句包含內嵌使用者定義函式的查詢 |
是的。 |
此外,您可能無法更新查詢結果中的特定數據行。 下列清單摘要說明您無法在 [結果] 窗格中更新的特定數據行類型。
- 以表達式為基礎的欄位
- 以純量使用者定義函數為基礎的資料欄
- 其他使用者刪除的列或欄
- 其他使用者鎖定的資料列或欄(鎖定的資料列在解除鎖定後通常會立即更新)
- 時間戳或 BLOB 欄