当我使用DAL在web2py中创建数据库时,例如,在我的网站上为用户注释创建一个表,并且我需要能够让发送该特定注释的用户获得联系,我可以通过电子邮件进行操作..
但是,如果电子邮件未在使用该电子邮件作为该用户的参考1到1的所有“子”表上进行更新,则电子邮件可能会随时间变化(可能的选项),并且数据库本身最终可能会寻找不存在的用户。
由于这个原因,我将需要自动更新子表中的所有外键,因此是否存在此功能(在外键上级联更新),并且在使用DAL时默认情况下/是否可以通过以下方式告知DAL连接:在所需的updateoncascade=True
字段中添加Field("name", type="type", notnull=True, updateoncascade=True)
?
答案 0 :(得分:0)
DAL在创建表时没有提供用于指定ON UPDATE CASCADE
的API,因此您必须从外部进行操作。另外,您可以利用_after_update
hook更新任何子表中的记录。
还要考虑是否要在电子邮件地址上设置外键,而不是使用内置的reference
字段功能,该功能会在父表的id
字段上创建外键。因为给定用户记录的id
永远不会改变,所以您不必担心级联更新:
db.define_table('comments',
...,
Field('author', 'reference auth_user'))
以上,'reference auth_user'
为db.auth_user.id
字段设置了一个外键。