我正在 Django 上构建一个网络应用程序。客户坚持认为某个表上的某些列应该是主键,他不想要自动增量。但他也希望该列在应用程序中是可修改的,指出 Postgres 可以处理它(ON UPDATE CASCADE 子句)。我怎样才能让他摆脱困境,或者我应该同意这一点?他很固执。
编辑:我至少想知道按照他说的做事是否有害,或者这种方法有什么陷阱。
我正在 Django 上构建一个网络应用程序。客户坚持认为某个表上的某些列应该是主键,他不想要自动增量。但他也希望该列在应用程序中是可修改的,指出 Postgres 可以处理它(ON UPDATE CASCADE 子句)。我怎样才能让他摆脱困境,或者我应该同意这一点?他很固执。
编辑:我至少想知道按照他说的做事是否有害,或者这种方法有什么陷阱。
可以从Django 的有关 auto pk 的文档中完成:
如果您想指定自定义主键,只需在其中一个字段上指定 primary_key=True。如果 Django 看到你明确设置了 Field.primary_key,它不会添加自动 id 列。
但是,pk 通常用于对象标识和检索。手动管理它们并确保唯一性是一个 PITA,它不仅仅是编辑它们,还需要在创建对象并将其存储在数据库中时呈现和唯一性。