Hi all,
I've been implementing foreign keys in some of my older tables, as detailed at:
http://www.sqlite.org/foreignkeys.html
usually like this:
foreign key ChildTable (ChildColumn1, ChildColumn2)
references ParentTable (ParentColumn1, ParentColumn2)
on delete cascade
which is working well.
In some cases (eg for in table that logs changes), while I want to specify a
foreign key relationship, I don't want deletions in the parent to cascade into
the child or restrict the deletion. I notice that there is a "no action"
option, so I've started to use that:
foreign key ChildTable (ChildColumn1, ChildColumn2)
references ParentTable (ParentColumn1, ParentColumn2)
on delete no action
I have a few questions:
1. What does SQLite do if the action is just left blank? Does it have the same
affect as explicitly writing "no action"? ie is the above the same as:
foreign key ChildTable (ChildColumn1, ChildColumn2)
references ParentTable (ParentColumn1, ParentColumn2)
2. I modified the schema to include "no action" on an app on my iPad (running
SQLite version 3.6.23.2). But when I move it to my Mac (running SQLite version
3.6.12) and then run:
pragma integrity_check;
I get an error:
SQL error: malformed database schema (ChildTable) - near "no": syntax error
Is this to be expected? I know that foreign key actions are supported in SQLite
version 3.6.19 onward, but previous version supported parsing the foreign key
schema. Did it not support parsing "no action"?
3. For backwards parsing compatibility, am I better off just leaving the action
blank instead of explicitly writing "on delete no action"?
Thanks,
Tom
BareFeetWare
--
Comparison of SQLite GUI tools:
http://www.barefeetware.com/sqlite/compare/?ml
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users