0

例如,当我使用 DAL 在 web2py 中创建数据库时,我为网站上的用户评论创建了一个表,并且我需要能够获取发送该特定评论的用户,我可以通过电子邮件来完成。
但是电子邮件可能会随着时间而改变(可能的选项),并且如果电子邮件没有在使用该电子邮件作为该用户的 1 对 1 参考的所有“子”表上更新,则数据库本身最终可能会寻找不存在的用户。
出于这个原因,我需要自动更新子表中的所有外键,所以这个功能(更新外键的级联)是否存在,并且默认情况下在使用 DAL 时/是否可以告诉 DAL 连接通过updateoncascade=True在需要的Field("name", type="type", notnull=True, updateoncascade=True)字段中添加一个?

4

1 回答 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 回答