1

SQLServerにクエリがあります。

insert into [Sha1]( 
       [IDTbl]
      ,[IDTbl_old]
      ,[IDold]
      ,[WordsAsl])
 (SELECT  [IDTbl]
      ,[IDTbl_old]
      ,[IDold]
      ,[WordsAsl]
  FROM [Sha2])

このエラーを解決する方法:

列'IDTbl'、テーブル'Sha1'に値NULLを挿入できません。列はnullを許可しません。INSERTは失敗します。

4

2 に答える 2

2

SELECT含む行を除外する以外のもう1つのオプションはNULL、関数を使用して、次ISNULL()の代わりにデフォルト値を提供することですNULL

 INSERT INTO dbo.Sha1(IDTbl, IDTbl_old, IDold, WordsAsl)
     SELECT  
        ISNULL(IDTbl, 42),
        IDTbl_old,
        IDold,
        WordsAsl
     FROM dbo.Sha2

ここで、のIDTbl値がdbo.Sha2であるNULL場合は、代わりに42を返す必要があると規定しました(したがって、の代わりにSELECTこの値を挿入します)。dbo.Sha1NULL

于 2012-04-22T07:39:26.653 に答える
1

ソーステーブルの一部の行はNULLIDTblフィールドに含まれている必要があります。

試す:

 insert into [Sha1]( 
   [IDTbl]
  ,[IDTbl_old]
  ,[IDold]
  ,[WordsAsl])
SELECT  [IDTbl]
  ,[IDTbl_old]
  ,[IDold]
  ,[WordsAsl]
FROM [Sha2]
WHERE IDTbl IS NOT NULL

WHEREターゲットテーブルの他の列に制約がある場合は、この句をより複雑にする必要がある場合があります。

于 2012-04-22T06:26:35.140 に答える