更新結果的規則
結果窗格中顯示的結果集,在許多情況下是可以更新的,不過也有些情形無法更新。
一般說來,為了更新結果,查詢和檢視表設計工具必須要有足夠的資訊才能唯一識別資料表中的資料列。例如,輸出清單中的查詢包含主索引鍵。此外,也必須要有足夠的使用權限才能更新資料庫。
如果查詢以檢視表做為依據,可能可以進更新。除了檢視表本身,同樣原則可以套用至其他地方,但檢視表中的基礎資料表除外。
注意事項 |
---|
[查詢和檢視表設計工具] 無法事先判斷是否能更新以檢視表做為依據的結果集。因此即使不能更新,也會顯示出所有的檢視表。 |
下表具體摘要說明 [結果] 窗格中的查詢結果有的可以、有的不能更新。在許多情況下,使用的資料庫會指出查詢結果是否能更新。
查詢 |
結果能否更新? |
---|---|
查詢是以輸出清單中有主索引鍵的一份資料表為依據 |
能 (不含下列清單)。 |
查詢是以不一份含唯一索引也沒有主索引鍵的資料表為依據 |
依照查詢和資料庫而定。如果有足夠的資訊則可唯一識別出記錄,有些資料庫允許更新作 。 |
查詢是以未相聯結的多份資料表為依據 |
否。 |
查詢是以資料庫中標記為唯讀的資料為依據 |
否。 |
查詢是以和一份無條件約束資料表相關的一份檢視表為作業依據 |
能 (不含下列清單)。 |
查詢是以一對一關聯性 (One-To-One Relationship) 所聯結的資料表為依據 |
能 (不含下列清單)。 |
查詢是以一對多關聯性 (One-To-Many Relationship) 所聯結的資料表為依據 |
通常可以。 |
查詢是以三份以上具有多對多關聯性 (Many-To-Many Relationship) 的資料表為依據 |
否。 |
查詢是以未獲得更新使用權限的一份資料表為依據 |
可刪除但不能更新。 |
查詢是以未獲得刪除使用權限的一份資料表為依據 |
可更新但不能刪除。 |
彙總查詢 (Aggregate Query) |
否。 |
查詢是以包含總計或彙總函式 (Aggregate Function) 的子查詢 (Subquery) 為依據 |
否。 |
查詢包含有 DISTINCT 關鍵字,以排除重複的資料列 |
否。 |
查詢的 FROM 子句包含可傳回資料表的使用者定義函式,及包含多重選擇陳述式的使用者定義函式 |
否。 |
查詢的 FROM 子句包含內嵌 (Inline) 使用者定義函式 |
是。 |
此外,查詢結果中可能有特定的資料行無法進行更新。下列清單說明無法在 [結果] 窗格進行更新的特定資料行型別。
資料行是以運算式為依據
資料行是以純量使用者定義函式為依據
資料列或資料行已由其他使用者刪除
資料列或資料行已由其他使用者鎖定 (鎖定的資料列通常解除鎖定後即可更新)
時間戳記或 BLOB 資料行
請參閱
概念
可使用 Visual Database Tools 進行的工作