利用 Transact-SQL 存取 FileTable

適用於:SQL Server

描述 Transact-SQL 資料操作語言 (DML) 命令如何與 FileTable 搭配運作。

FileTable 上的 INSERT 作業

下列考量適用於 FileTable 上的 INSERT 作業:

  • 所有檔案屬性資料行都有 NOT NULL 條件約束。 若未明確設定值,則會提供適當的預設值。

  • 若 INSERT 陳述式設定 namepath_locatorparent_path_locator 或檔案屬性,則會強制執行系統定義的條件約束。

  • 提供 GetPathLocator (Transact-SQL) 函式的檔案系統路徑,應用程式就可以取得檔案或目錄的 path_locator

FileTable 上的 UPDATE 作業

下列考量適用於 FileTable 上的 UPDATE 作業:

  • 允許更新任何使用者定義的資料。

  • 若 INSERT 陳述式設定 namepath_locatorparent_path_locator 或檔案屬性,則會強制執行系統定義的條件約束。

  • 您可以更新 file_stream 資料行中的 FILESTREAM 資料,而不影響任何其他資料行 (包括時間戳記)。

FileTable 上的 DELETE 作業

下列考量適用於 FileTable 上的 DELETE 作業:

  • 刪除資料列也會從檔案系統中移除對應的檔案或目錄。

  • 若資料列對應至包含其他檔案或目錄的目錄,則無法刪除資料列。

針對 FileTable 上 DML 作業強制執行的條件約束

系統定義的條件約束可確保 DML 動作不會危害檔案命名空間階層的完整性。 強制執行的條件約束包括:

  • 當您設定或變更檔案或目錄的 名稱 時:

    • 會強制執行 Windows 檔案及目錄命名慣例。

    • 會強制執行上層目錄中名稱的唯一性。

  • 當您設定或變更 path_locatorparent_path_locator以設定或變更檔案或目錄的位置時:

    • 會強制執行唯一性。

    • 會強制執行目錄和檔案之階層樹狀目錄的一致性 (包括 path_locatorparent_path_locator 值的一致性)。

  • file_stream 資料行不是 Null 時,則無法將 is_directory 的值設定為 true。 file_stream 資料行中的資料指出資料列代表檔案,而非代表目錄。

  • 檔案屬性資料行不得為 Null。 會使用預設值強制執行 NOT NULL 條件約束。

  • last_access_time 的值不能早於 last_write_timecreation_time

另請參閱

載入檔案至 FileTable
使用 FileTable 中的目錄與路徑
使用檔案輸入輸出 API 存取 FileTable
FileTable DDL、函數、預存程序及檢視