Re: [Factor-talk] +foreign-id+ seems to protect unused entries too

2016-08-26 Thread Georg Simon
Am Thu, 25 Aug 2016 15:21:11 +0200
schrieb Björn Lindqvist :

> > If I remove ``{ +foreign-id+ node "ID" }`` all works fine.
> >
> > Do I understand ``+foreign-id+`` wrong ?  
> 
> There was a bug in the delete restrict triggers. Should be fixed now.
> 
> > tree "TREE" {
> > { "id"  "ID"INTEGER +db-assigned-id+ }
> > ! { "node""NODE"  INTEGER }
> > { "node""NODE"  INTEGER { +foreign-id+ node "ID" } }
> > } define-persistent  
> 
> You can also use: { "node" "NODE" INTEGER { +foreign-id+ node "ID" }
> +on-delete+ +cascade+ } to get cascading deletes. IME, that is almost
> always better than restricting deletes.
> 
> > "test.db"
> > [ "rm " prepend system drop ]  
> 
> You could use [ ?delete-file ] here.
> 
> 
Thank you. Now it works. Georg

--
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


Re: [Factor-talk] +foreign-id+ seems to protect unused entries too

2016-08-25 Thread Björn Lindqvist
> If I remove ``{ +foreign-id+ node "ID" }`` all works fine.
>
> Do I understand ``+foreign-id+`` wrong ?

There was a bug in the delete restrict triggers. Should be fixed now.

> tree "TREE" {
> { "id"  "ID"INTEGER +db-assigned-id+ }
> ! { "node""NODE"  INTEGER }
> { "node""NODE"  INTEGER { +foreign-id+ node "ID" } }
> } define-persistent

You can also use: { "node" "NODE" INTEGER { +foreign-id+ node "ID" }
+on-delete+ +cascade+ } to get cascading deletes. IME, that is almost
always better than restricting deletes.

> "test.db"
> [ "rm " prepend system drop ]

You could use [ ?delete-file ] here.


-- 
mvh/best regards Björn Lindqvist

--
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk


[Factor-talk] +foreign-id+ seems to protect unused entries too

2016-08-23 Thread Georg Simon
In the script below ``delete-tuples`` in line 8 from the end 
throws an error although the id 2 is not pointed to by any tree entry.

If I remove ``{ +foreign-id+ node "ID" }`` all works fine.

Do I understand ``+foreign-id+`` wrong ?

Georg
--
USING:
accessors
db db.sqlite db.tuples db.types
kernel libc prettyprint sequences
;
IN: test-script

TUPLE: node
id
;
node "NODE" {
{ "id"  "ID"INTEGER +db-assigned-id+ }
} define-persistent

TUPLE: tree
id node
;
tree "TREE" {
{ "id"  "ID"INTEGER +db-assigned-id+ }
! { "node""NODE"  INTEGER }
{ "node""NODE"  INTEGER { +foreign-id+ node "ID" } }
} define-persistent

: .db ( -- )
node tree [ new select-tuples [ . ] each ] bi@
;
: main ( -- )

node new [ insert-tuple ] [ id>> ] bi
tree new swap >>node insert-tuple

node new insert-tuple

.db

node new 2 >>id delete-tuples

.db
;
"test.db"
[ "rm " prepend system drop ]
[  [ { node tree } ensure-tables main ] with-db ]
bi

--
___
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk