这是表的架构,这里定义了一个与job_category_id,screening_type_id,test_id,sex的唯一约束。
[InvalidOperationException: Tracker.Current is not initialized]
Sitecore.Analytics.Pipelines.StartAnalytics.StartTracking.Process(PipelineArgs args) +317
(Object , Object[] ) +83
Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +445
Project.Web.Handler.PdfCreation.GetProductPdf.ProcessRequest(HttpContext context) in d:\Project\Website\Handler\PdfCreation\GetProductPdf.ashx.cs:69
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +913
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165
如果一个字段为空,则此处的唯一约束失败。
如何添加约束以便接受一个空值,因此它将是唯一的。
可以使用JPA在应用程序中处理这种情况吗?
答案 0 :(得分:4)
空值不等于
因此,独特的约束不会以这种方式工作。 您有两个选择:
创建一个触发器,如果表中包含多个空值,将手动检查数据完整性并拒绝更改。
在这些列上将默认值设置为final CellProcessor[] processors = new CellProcessor[] {
new StrRegEx("\\w{3}"), // string value check
new ParseDate("yyyy-MM-dd_HH:mm:ss", new DateToCalendar()) // date
};
和0
约束。在这种情况下,您将只能有一行包含空(零)值。
更新:
根据Abelisto建议,可以使用functional indexes轻松完成。
NOT NULL