我有一个SQL Server脚本,我用它来将一些数据插入数据库。我不会在这里上传整个脚本只是为了节省空间/时间,但我会包含重要的部分。
所以这就是问题所在。我有一个表有一些loginhtml
的列,这个列是一个非可空类型。我希望此列在此特定添加上留空,以便它可以默认返回到我指向它的父级。所以这里我们有这个重要部分的声明:
declare @loginTitle varchar(250), @loginHtml varchar(max)
在这里,我们将把它设置为:
set @loginHtml = null
这里的插入部分不可避免地会失败:
insert dbo.ApplicationLogin(ApplicationID, Title, Html)
select @appID, @loginTitle, @loginHtml
编辑:如何将此脚本“默认”为loginhtml列,无论PARENT应用程序是什么?是否有一些“IF”语句/子句可用于实现此目的?
答案 0 :(得分:0)
只要列中的非null,就不能在其中插入空值。您可以尝试将其设置为空字符串或其他默认值。你也可以选择父母的html并插入它。没有办法跳过插入任何列。
答案 1 :(得分:0)
正如其他人所说,如果列上有一个Not Null约束,那你就不走运了,但是你可以做到
if @loginhtml is null
begin
set @loginhtml = ''
end
或更改
set @loginhtml = ''
查找父应用程序中的默认值。
你会写一个空白而不是任何东西。显然,你遇到没有loginhtml会遇到的任何问题,但如果这就是你想要的那就是你想要的!
答案 2 :(得分:0)
您可以调整脚本:
insert dbo.ApplicationLogin(ApplicationID, Title, Html)
select @appID, @loginTitle, ISNULL(@loginHtml, '')
或调整您的表并添加默认约束:
ALTER TABLE ApplicationLogin ADD DEFAULT (('')) FOR [Html];
答案 3 :(得分:0)
我可能在最初的帖子中没有提到这一点,我想为此道歉。但是数据库的设置方式是应用程序可以拥有父应用程序,因此将loginhtml设置为父应用程序并“技术上”跳过将其添加到新应用程序可以通过以下方式完成:
if(@loginHtml is not null)
begin
insert dbo.ApplicationLogin(ApplicationID, Title, Html)
select @appID, @loginTitle, @loginHtml
end
这成功运行并使“@loginhtml”默认为父应用程序为该值设置的任何内容。