我需要在enc_id
中允许NULL,但是如果值不是NULL,我需要这些值是唯一的。这是我的模型:
class Intake(models.Model):
id = models.AutoField(primary_key=True)
enc_id = models.IntegerField(blank=True, null=True, unique=True)
enc_date = models.DateField(null=True)
enrollment = models.ForeignKey('Enrollment')
尝试添加另一个没有enc_id
的实例时出错:
根据我所读到的(包括this和一些已解决的Django问题),拥有blank=True, null=True, unique=True
应该允许我有重复的null,但不能执行。我重新创建了我的数据库以防万一,它仍然会引发完整性错误。在
我运行的是django1.10和mssqlserver10。有什么想法吗?在
罗西
对于我来说,有一个唯一的字段,在这个字段中可以有重复的null,这对我来说没有多大意义。你能不能去掉限制,用其他方法来强化这个规则呢?在
例如,您可以重写save方法来执行此操作。。在
我希望这是有意义的,但是在DB级别的规则,比如您定义的规则是非常有限的。。在
对于将来遇到这种情况的人来说,这是MS SQL Server的一个限制。ANSI标准要求唯一索引不包含重复值—SQL Server(而不是其他数据库)认为NULL等于NULL—许多其他数据库(例如Postgres)和ANSI标准从92年起将NULL视为不可知值,这与SQL SELECT中考虑的另一个不可知值不同,其中的\uuuu是空值与=空值的比较。SQL Server有一个ANSI\u NULLS标志,它实际上强制在查询中使用符合标准的IS(NOT)NULL而不是xyz=/<;>NULL,但这在索引中没有相同的效果。在
更多非Django特定信息:https://www.sqlservergeeks.com/sql-server-unique-constraint-multiple-null-values/
相关问题 更多 >
编程相关推荐