Not sure if there's a way with your current code, but if you use either
an LTREE or nested sets you'd be able to detect this situation quite
easily. There was a discussion about both on the list about 2 weeks ago.

On Thu, Feb 23, 2006 at 05:13:37PM +0100, Thorsten Kortmann wrote:
> sorry for my english..
> 
> i have two tables:
> 
> 1. GROUP
>    id
>    description
>    is_subgroup
> 
> 2. GROUPDETAIL
>    id
>    groups_id
>    remote_id
>    remote_type
> 
> - each group can have 1 to x groupdetail.
> - groupdetail.remote_type can have two values, 0 and 1
>   if it is 0, remote_id points to a product
>   if it is 1, remote_id points to a group (where is_subgroup=1)
> 
> The is_subgroup problem is fixed by this trigger:
> I only can point to (sub)groups.
> 
> CREATE TRIGGER bupdate_groupdetail BEFORE UPDATE ON groupdetail
> FOR EACH ROW BEGIN
> SELECT RAISE(ROLLBACK, 'error...')
>       WHERE new.remote_type = 1
>       AND (SELECT id FROM group WHERE id = new.remote_id
>               AND is_subgroup = 1) IS NULL;
> END;
> 
> But i can point to (sub)groups that allready part of the same path.
> In this way i get an endless recursion (1).
> 
>  GROUP-->SUB-->SUB-->SUB-->PRODUCT
>           |     |     |
>           +-<-1-+     +--->SUB-->PRODUCT
> 
> Is there a way to check all parent (sub)groubs inside a trigger?
> 
> HTH
>  Thorsten
> 

-- 
Jim C. Nasby, Sr. Engineering Consultant      [EMAIL PROTECTED]
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

Reply via email to