是否可以在列上定义一个约束,该约束将用默认值替换某个输入值?
我有一个带有类型列的表,除非用户定义了该功能的类型,否则该表应始终为默认值。
当类型为NULL时,它将被默认值替换。不幸的是,当未定义类型时,表单处理程序不会填充NULL。它改为填充一个空字符串。
如何编程SQL以使用默认值替换这些空字符串?
代码片段:
CREATE TABLE [dbo].[ACC_Plannen](
[ID] [int] IDENTITY(1,1) NOT NULL,
[PLANID] [nchar](50) NULL,
[plantype] [nvarchar](500) NULL CONSTRAINT [DF_ACC_Plannen_plantype] DEFAULT ('Algemeen'),
答案 0 :(得分:0)
如果你只能在SQL上处理这个问题,你可以尝试一些事情:
在上述两者之间我会使用存储过程,因为你必须明确地调用它,而触发器会隐式地执行它。甚至可能添加一个触发器,它会在无效输入上引发错误,而不是修复它。
理想情况下,您可以在将输入发送到SQL之前清除输入。然后你可以在你的桌子上有NOT NULL DEFAULT
约束。
答案 1 :(得分:0)
主要问题如下:“你想拒绝插入并修复前端的数据(用户/应用程序prgm)。或者只是更新后端(数据库)的坏数据。”
可以使用check constraint来验证数据并确保没有空字符串。违规会导致错误。
可以使用after insert trigger将空字符串重新(更新)为您想要的值。
只要知道用例。
如果您是批量插入且检查约束失败,则整批中止。
如果要插入大量数据,将对每条记录执行触发器。在这种情况下,在保证大量批量加载之后可能是更新语句。
一如既往,这取决于您的情况。
快乐的编码!