Thanks for your quick response, Anthony. If I got it correctly, it would
be working as expected if I changed the test_id type from integer to id.
I gave it a try, but it only raised some errors (missing required field)
and more importantly, it did not allow me to insert this field manually.
Is there some other approach to reference other value than id?
Thanks, Jan
Dne 4.3.2012 19:41, Anthony napsal(a):
Note, when you create a table with define_table, it automatically
creates a field called "id" of type "id", which serves as the record
ID. In your test_counts table, the test_id field is therefore
referencing the "id" field of the tests table, not the test_id field,
which is just a regular integer field. In any case, because of the
ondelete='CASCADE', when you delete a record from tab.tests, it should
delete any records from tab.test_counts that reference that record.
Anthony
On Sunday, March 4, 2012 12:42:05 PM UTC-5, Jan Rozhon wrote:
Hi all, I have a newbie question regarding the cascade delete of
referenced database entries. Basically, I have these two tables:
tab = DAL('sqlite://tab.sqlite')
tab.define_table('tests',
Field('test_id', 'integer', required=True,
default=''),
Field('test_pid', 'integer', ondelete='NO ACTION'),
Field('args'))
tab.define_table('test_counts',
Field('test_id', tab.tests,
requires=IS_IN_DB(tab, tab.tests.test_id, '%(test_id)s'),
ondelete='CASCADE'),
Field('message'))
and I want web2py to create SQLite tables tests and test_counts.
Test_counts should reference "test_id" field from the tests table
and whenever the test entry with the corresponding test_id is
deleted the appropriate rows in test_counts should be deleted as
well, but it doesnt work that way and I am unable to find a
solution either using my knowledge or google as well.
Thanks in advance for any answer, Jan
--
Ing. Jan Rozhon
Doktorand katedry telekomunikační techniky
VŠB-TU Ostrava