例如,当我使用 DAL 在 web2py 中创建数据库时,我为网站上的用户评论创建了一个表,并且我需要能够获取发送该特定评论的用户,我可以通过电子邮件来完成。
但是电子邮件可能会随着时间而改变(可能的选项),并且如果电子邮件没有在使用该电子邮件作为该用户的 1 对 1 参考的所有“子”表上更新,则数据库本身最终可能会寻找不存在的用户。
出于这个原因,我需要自动更新子表中的所有外键,所以这个功能(更新外键的级联)是否存在,并且默认情况下在使用 DAL 时/是否可以告诉 DAL 连接通过updateoncascade=True
在需要的Field("name", type="type", notnull=True, updateoncascade=True)
字段中添加一个?
问问题
107 次
1 回答
0
DAL 不提供用于指定ON UPDATE CASCADE
何时创建表的 API,因此您必须在外部执行此操作。或者,您可以使用_after_update
挂钩来更新任何子表中的记录。
还要考虑是否要在电子邮件地址上设置外键,而不是使用内置字段功能,它会在父表reference
的字段上创建外键。id
因为id
给定用户记录的 永远不会改变,所以您不必担心级联更新:
db.define_table('comments',
...,
Field('author', 'reference auth_user'))
上面,'reference auth_user'
设置了该db.auth_user.id
字段的外键。
于 2019-01-09T19:35:03.693 回答