使用 Transact-SQL 访问 FileTable

说明 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、函数、存储过程和视图