SQL分层表中的Nulls与Guid.Empty

Ada*_*dam 2 c# sql

之情况:

我有一个带分层记录的文件夹表.行的ID是GUID类型.表上的ParentID存储父文件夹ID:

  • ID(Guid)
  • FolderName(varchar)
  • ParentID(Guid)

题:

插入顶级文件夹的最佳做法是什么?我应该将parentID列设为null,还是创建"顶级"记录(ID = Guid.Empty)并将该ID用于顶级文件夹?

Eri*_*ric 5

guid.empty不是SQL值.null为根级别创建ParentID .

您必须硬编码{00000000-0000-0000-0000-000000000000}才能选择根值,而SQL本身知道null:

select * from mytbl where parentid is null
Run Code Online (Sandbox Code Playgroud)

此外,hierarchyid如果您正在构建父子表,请查看SQL Server 2008的新数据类型.它可以节省你不必构建递归CTE来遍历你的树.

  • 我们将这些关系称为"猪耳朵",因为他们看待逻辑ERD.如果这是在Oracle上,请使用CONNECT BY PRIOR id = parentid. (2认同)