Re: A few questions about ltree - Mailing list pgsql-general

From Alban Hertroys
Subject Re: A few questions about ltree
Date
Msg-id 4448EBF1.4040708@magproductions.nl
Whole thread Raw
In response to Re: A few questions about ltree  (Teodor Sigaev <teodor@sigaev.ru>)
Responses Re: A few questions about ltree
Re: A few questions about ltree
List pgsql-general
Teodor Sigaev wrote:
>> Maybe something along the lines of the following is possible?:
>
> Exact, it's for what ltree was developed.

Cool, looks like it is what I need then.

> contrib_regression=# select 'a.b.c' <@ 'a.b'::ltree;
>  ?column?
> ----------
>  t
> (1 row)

How would you use this to constrain a foreign key?

We've been experimenting with a table containing a branch 'a', 'a.b' and
'a.b.c', but deleting 'a.b' didn't cause a constraint violation.

SQL> CREATE TABLE ltree_test (path ltree PRIMARY KEY REFERENCES
ltree_test(path));
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index
"ltree_test_pkey" for table "ltree_test"
CREATE TABLE
SQL> INSERT INTO ltree_test VALUES ('a'::ltree);
INSERT 84117368 1
SQL> INSERT INTO ltree_test VALUES ('a.b'::ltree);
INSERT 84117369 1
SQL> INSERT INTO ltree_test VALUES ('a.b.c'::ltree);
INSERT 84117370 1
SQL> DELETE FROM ltree_test WHERE path = 'a.b'::ltree;
DELETE 1
SQL> select * from ltree_test;
  path
-------
  a
  a.b.c
(2 rows)

Is there some obvious/easy way to prevent this?

Regards,
--
Alban Hertroys
alban@magproductions.nl

magproductions b.v.

T: ++31(0)534346874
F: ++31(0)534346876
M:
I: www.magproductions.nl
A: Postbus 416
    7500 AK Enschede

// Integrate Your World //

pgsql-general by date:

Previous
From: "Tomi NA"
Date:
Subject: Re: setting the environment locale - linux, windows
Next
From: "Andrus"
Date:
Subject: Re: How to replace rows in table so that foreign key rows