0

我有一个用于将一些数据插入数据库的 SQL Server 脚本。为了节省空间/时间,我不会在这里上传整个脚本,但我会包括重要的部分。

所以这就是问题所在。我有一个表,其中有一列 some loginhtml,该列是不可为空的类型。我希望在此特定添加上将此列留空,以便它可以默认返回到我所指向的父级。所以这里我们有这个重要部分的声明:

declare @loginTitle varchar(250), @loginHtml varchar(max)

在这里,我们将设置为:

set @loginHtml = null

这是不可避免地会失败的插入部分:

insert dbo.ApplicationLogin(ApplicationID, Title, Html)
   select @appID, @loginTitle, @loginHtml

编辑:我怎样才能让这个脚本将 loginhtml 列“默认”到父应用程序是什么?是否有一些“IF”语句/子句可用于完成此操作?

4

4 回答 4

0

只要该列不为空,就不能在其中插入空值。您可以尝试将其设置为空白字符串或其他默认值。您也可以选择父级的 html 并插入它。没有办法跳过插入任何列。

于 2014-07-15T14:17:20.887 回答
0

正如其他人所说,如果列上有一个 Not Null 约束,那么你就不走运了,但你可以这样做

if @loginhtml is null 
    begin
       set @loginhtml = ''
    end

或者改变

set @loginhtml = ''

查找父应用程序中的默认值。

你会写一个空白而不是任何东西。显然,您会遇到没有 loginhtml 的任何问题,但如果这就是您想要的,那就是您想要的!

于 2014-07-15T14:18:41.260 回答
0

您可以调整脚本:

insert dbo.ApplicationLogin(ApplicationID, Title, Html)
select @appID, @loginTitle, ISNULL(@loginHtml, '')

或者调整你的表并添加一个默认约束:

ALTER TABLE ApplicationLogin ADD DEFAULT (('')) FOR [Html];
于 2014-07-15T14:20:02.870 回答
0

我可能在最初的帖子中没有提到这一点,我想为此道歉。但是数据库的设置方式是应用程序可以有父应用程序,因此将 loginhtml 设置为父应用程序并“技术上”跳过将其添加到新应用程序可以通过这样做来完成:

if(@loginHtml is not null)
begin
    insert dbo.ApplicationLogin(ApplicationID, Title, Html)
    select @appID, @loginTitle, @loginHtml
end

这会成功运行并使“@loginhtml”默认为父应用程序为该值设置的任何值。

于 2014-07-15T15:08:24.280 回答