NAME

sqltree - hierarchical data (tree) implementation in SQL

VERSION

0.05 (2021-01-28)

SYNOPSIS

sqltree DRIVER TABLE [OPTIONS]

DESCRIPTION

sqltree generates the SQL for a herarchical data (tree) implementation using triggers, as described here:

http://www.depesz.com/index.php/2008/04/11/my-take-on-trees-in-sql/

This implementation relies on a previously-defined table containing:

  • a single primary key column

  • a parent column that references the primary key

  • a column to hold path data [optional]

Several triggers are added to this previously-defined table, which update a new table holding in-depth tree information.

Output from sqltree can usually be piped directly to the "sqlite3" or "psql" command line tools.

ARGUMENTS

DRIVER

Must be 'SQLite' or 'Pg'. Patches for other database systems are welcome.

TABLE

The name of the (existing) table holding the hierarchical data. The additional tree table will be postfixed with the value of the --postfix option.

OPTIONS

--id, -i STR

The primary key of the source table holding the hierarchical data. Defaults to "id".

--no-comments, -C

Do not include descriptive comments.

--drop, -d

Include DROP TABLE/TRIGGER statements.

--name, -n STR

When --path is used this option identifies the source column from which path names will be built. Defaults to "name".

--parent_id, -I STR

The parent column of the source table holding the hierarchical data. Defaults to "parent_id".

--path, -p STR

The destination column into which the tree path will be automatically calculated. This column would usually be defined as TEXT or VARCHAR, and should be UNIQUE.

--postfix, -f STR

The string postfixed to TABLE to name the additional table. Defaults to "_tree".

--separator, -s CHAR

The string that separates components in the "--path" column. Defaults to "/".

--type, -t TYPE

The SQL column type of the source table primary key and parent columns. Defaults to "INTEGER".

SEE ALSO

SQL::Tree(3pm)

AUTHOR

Mark Lawrence <nomad@null.net>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2021 Mark Lawrence <nomad@null.net>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.