描述 Transact-SQL 資料操作語言(DML)命令如何與 FileTable 一起運作。
在 FileTable 上執行的 INSERT 作業
下列考慮適用於 FileTable 上的 INSERT 作業:
所有檔案屬性欄位都有 NOT NULL 條件約束。 如果未明確設定值,則會提供適當的預設值。
如果 INSERT 語句設定 名稱、 path_locator、 parent_path_locator或檔案屬性,則會強制執行系統定義的條件約束。
應用程式可以提供 GetPathLocator (Transact-SQL) 函式的檔案系統路徑,以取得檔案或目錄的path_locator。
FileTable 上的 UPDATE 作業
下列考慮適用於 FileTable 上的 UPDATE 作業:
允許更新任何使用者定義的數據。
如果 INSERT 語句設定 名稱、 path_locator、 parent_path_locator或檔案屬性,則會強制執行系統定義的條件約束。
您可以更新 file_stream 數據行中的 FILESTREAM 數據,而不會影響任何其他數據行,包括時間戳。
FileTable 上的 DELETE 作業
下列考慮適用於 FileTable 上的 DELETE 作業:
刪除資料列也會從文件系統中移除對應的檔案或目錄。
如果數據列對應至包含其他檔案或目錄的目錄,刪除數據列就會失敗。
在 FileTable 上對 DML 作業所施加的條件約束
系統定義的條件約束可確保 DML 動作不會危害檔案命名空間階層的完整性。 強制執行的條件約束包括下列各項:
當您設定或變更檔案或目錄 的名稱 時:
會強制執行 Windows 檔案和目錄命名慣例。
父目錄中名稱的唯一性會被強制要求。
當您設定或變更檔案或目錄的位置時,請設定或變更 path_locator 或 parent_path_locator:
確保其獨特性。
會確保目錄和檔案階層樹狀結構的一致性,包括path_locator與parent_path_locator值的一致性。
is_directory 的值不能設定為 true,當 file_stream 數據行不是 null 時。 file_stream數據行中的數據表示數據列代表檔案,而不是目錄。
檔案屬性數據行不可為 Null。 NOT NULL 條件約束會使用預設值強制執行。
last_access_time 的值不能早於 last_write_time 和 creation_time。
另請參閱
載入檔案至 FileTable
在 FileTable 中處理資料夾與路徑
使用檔案輸入輸出 API 存取 FileTable
FileTable DDL、函數、預存程序及檢視