我正在编写一个具有大型表单流程的应用程序。
由于它的大小,我希望能够在输入时将每个字段的副本单独保存到数据库中。
问题是,我的表设计不允许空值。那么如何创建一个带有主键的新表行而不填写所有字段呢?
我的主表,链接到的所有其他表包含草稿布尔标志。草稿表格填写完毕后,可以提交并保存为完成的表格。
我当前的逻辑是占位符值只能在草稿标记形式中接受,例如-1表示整数,-1表示字符串等。但是在完成和提交表单时,它将确认没有空-1占位符在用作提交的表单之前仍然存在。
这看起来真的很脏。
是否还有其他人遇到类似问题,他们采取了哪些措施来解决这个问题?我宁愿不允许在我的表中使用NULL值。
提前致谢,
答案 0 :(得分:1)
使用'分段'用于处理临时/半填充表单数据的表。
当用户到达终点时,您将触发从登台到最终表格的数据副本,在将数据放入真实表格之前进行所有必需的检查/验证/等等。
我看到的优势:
YMMV,但这是一个很好的解决方案,我真的很喜欢优点1和2.我不喜欢可以为空的字段,因为如果允许null,那么它经常是空的并且也不会# 39;如果我可以避免它,我想混合临时数据和最终数据^^
答案 1 :(得分:0)
您最好的选择是将用户输入保存为变量,直到收到所有表单数据。此时,您可以使用所有这些变量安全地将新行作为单个插入插入,而无需担心空值。
此外,使用单个插入可以减少几个不必要的数据库查询的开销。
答案 2 :(得分:0)
如果没有给出那些列的默认值,那么您可以使用默认值来保存这些列。但是请确保更新所有这些列,因为它将显示默认数据你将从db获得数据。
CREATE TABLE [dbo].[TestTable] (
[Id] INT NOT NULL,
[Category] VARCHAR (50) NOT NULL DEFAULT 'Default Value',
PRIMARY KEY CLUSTERED ([Id] ASC)
)