是pk有效作为absolut id? (Django的)

时间:2012-03-14 10:09:17

标签: mysql django uuid

删除最后一个模型后,将为创建的下一个模型分配已删除的模型pk,这意味着删除模型的任何链接现在将指向新模型。

那么我们应该使用PK还是创建一个UUID? 例如,用户配置文件,某些高级配置文件将在删除时指向一些全新的配置文件。

  • 这个网站,堆栈溢出使用PK的问题,我想知道我写的内容是否也适用于此

2 个答案:

答案 0 :(得分:1)

从最简单的意义上讲,数据库使用PK字段的计数器,并在添加新记录时将其递增。删除/更新操作不会修改计数器。所以db不可能两次使用相同的值。

编辑:OOps,这似乎是Sqlite的一个功能。详细信息如下:http://sqlite.org/autoinc.html

引用文档:

  

如果在插入上没有指定ROWID,或者指定的ROWID没有   值为NULL,然后自动创建适当的ROWID。   通常的算法是给新创建的行一个ROWID   一个大于插入前表中最大的ROWID。

  

将生成上述正常的ROWID选择算法   只要你从不使用,就单调增加独特的ROWID   最大ROWID值,您永远不会删除表中的条目   最大的ROWID。

答案 1 :(得分:0)

事实上,您可以从same link了解到在主键上创建AUTOINCREMENT可以阻止这种麻烦。

尝试:

CREATE TABLE "Pity" (
"ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL);