0

データベースにデータを挿入するために使用している SQL Server スクリプトがあります。スペースと時間を節約するために、スクリプト全体をここにアップロードすることはしませんが、重要な部分を含めます。

ここに問題があります。一部の列を持つテーブルがありますloginhtml。この列は null 非許容型です。この特定の追加でこの列を空白のままにして、デフォルトで指定している親に戻すことができるようにしたいと思います。したがって、ここにこの重要な部分の宣言があります。

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

そして、ここに設定する内容があります:

set @loginHtml = null

そして、必然的に失敗する挿入部分は次のとおりです。

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

編集: このスクリプトで loginhtml 列を PARENT アプリケーションが何であれ "デフォルト" にするにはどうすればよいですか? これを達成するために使用できる「IF」ステートメント/句はありますか?

4

4 に答える 4

0

列が null でない限り、null 値を挿入することはできません。空白の文字列またはその他のデフォルト値に設定してみてください。親の 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 に答える