0

2番目のテーブルの順序が少し異なるため、現在、あるテーブルから別のテーブルにすべてのデータをコピーしようとしています。次のSQLスクリプトを使用しています。

USE LoanersTest
DROP TABLE LoanerItems1
CREATE TABLE LoanerItems1
(
LoanerKey INT NOT NULL UNIQUE 
,BCPartNumber VARCHAR(255)  NULL 
,Manufacturer VARCHAR(255)  NULL 
,Model VARCHAR(255)  NULL 
,Modality INT NOT NULL UNIQUE
,Status INT  NOT NULL UNIQUE
,Location INT  NOT NULL UNIQUE
,ShelvingKey INT NOT NULL UNIQUE
,CalDate VARCHAR(255)  NULL 
,CalDue VARCHAR(255)  NULL 
,BCID VARCHAR(255)  NULL 
,SerialNumber VARCHAR(255)  NULL 
,AssetTag VARCHAR(255)  NULL 
,LoanTerm VARCHAR(255)  NULL 
,PartNumber VARCHAR(255)  NULL 
,Notes VARCHAR(255)  NULL 
,CriticalNotes VARCHAR(255)  NULL 
,ShippingNotes VARCHAR(255)  NULL 
,ReceivingNotes VARCHAR(255)  NULL 
,Description VARCHAR(255)  NULL 
,Details VARCHAR(255)  NULL 
,Attachments VARCHAR(255)  NULL 
,Manuals VARCHAR(255)  NULL 
,PRIMARY KEY (LoanerKey) 
)
INSERT INTO LoanerItems1 (LoanerKey)
  SELECT LoanerKey FROM LoanerItems

INSERT INTO LoanerItems1 (BCPartNumber)
  SELECT BCPartNumber FROM LoanerItems

INSERT INTO LoanerItems1 (Manufacturer)
  SELECT Manufacturer FROM LoanerItems

INSERT INTO LoanerItems1 (Model)
  SELECT Model FROM LoanerItems

INSERT INTO LoanerItems1 (Modality)
  SELECT Modality FROM LoanerItems

INSERT INTO LoanerItems1 (Status)
  SELECT Status FROM LoanerItems

INSERT INTO LoanerItems1 (Location)
  SELECT Location FROM LoanerItems

INSERT INTO LoanerItems1 (ShelvingKey)
  SELECT ShelvingKey FROM LoanerItems

INSERT INTO LoanerItems1 (CalDate)
  SELECT CalDate FROM LoanerItems

INSERT INTO LoanerItems1 (CalDue)
  SELECT CalDue FROM LoanerItems

INSERT INTO LoanerItems1 (BCID)
  SELECT BCID FROM LoanerItems

INSERT INTO LoanerItems1 (SerialNumber)
  SELECT SerialNumber FROM LoanerItems

INSERT INTO LoanerItems1 (AssetTag)
  SELECT AssetTag FROM LoanerItems

INSERT INTO LoanerItems1 (LoanTerm)
  SELECT LoanTerm FROM LoanerItems

INSERT INTO LoanerItems1 (PartNumber)
  SELECT PartNumber FROM LoanerItems

INSERT INTO LoanerItems1 (Notes)
  SELECT Notes FROM LoanerItems

INSERT INTO LoanerItems1 (CriticalNotes)
  SELECT CriticalNotes FROM LoanerItems

INSERT INTO LoanerItems1 (ShippingNotes)
  SELECT ShippingNotes FROM LoanerItems

INSERT INTO LoanerItems1 (ReceivingNotes)
  SELECT ReveivingNotes FROM LoanerItems

INSERT INTO LoanerItems1 (Description)
  SELECT Description FROM LoanerItems

INSERT INTO LoanerItems1 (Details)
  SELECT Details FROM LoanerItems

INSERT INTO LoanerItems1 (Attachments)
  SELECT Attachments FROM LoanerItems

INSERT INTO LoanerItems1 (Manuals)
  SELECT Manuals FROM LoanerItems

最初のテーブルはまったく同じ形式で (列の順序が少し異なりますが)、約 80 のレコードが含まれています。どのレコードにも null 値が含まれていませんが、このステートメントを実行すると、次の結果が返されます。

値 NULL を列 'Modality'、テーブル 'LoanersTest.dbo.LoanerItems1' に挿入できません。列はヌルを許可しません。INSERT は失敗します。

値 NULL を列 'LoanerKey'、テーブル 'LoanersTest.dbo.LoanerItems1' に挿入できません。列はヌルを許可しません。INSERT は失敗します。

の値はLoanerKey、基本的に 1、2、3、4、5... 85、86、87 です。モダリティ列には、当分の間、同じ値が含まれます。この場合も、どちらの列にもヌルが含まれていませんが、このエラーが返されます。

4

2 に答える 2

5

個々の列を挿入しないでください。すべての列を 1 つのクエリに挿入します。

お気に入り

INSERT INTO LoanerItems1 (LoanerKey, BCPartNumber, Manufacturer...)
SELECT LoanerKey, BCPartNumber, Manufacturer, ....  FROM LoanerItems

現在行っているように 1 つの列のみを挿入すると、他の列はデフォルトで NULL になります。これが、表示されているエラーの原因です。

于 2013-06-14T15:33:50.340 に答える
0

一度にすべてのレコードを挿入する必要があります。ステートメントは行全体を挿入しようとしていますが、1 つの列のみを設定しています。あなたはこれを求めている:

insert into LoanerItems1
(LoanerKey
,BCPartNumber
,Manufacturer
,Model
,Modality
,Status
,Location
,ShelvingKey
,CalDate
,CalDue
,BCID
,SerialNumber
,AssetTag
,LoanTerm
,PartNumber
,Notes
,CriticalNotes
,ShippingNotes
,ReceivingNotes
,Description
,Details
,Attachments
,Manuals
,BCPartNumber
,Manufacturer
,Model
,Modality
,Status
,Location
,ShelvingKey
,CalDate
,CalDue
,BCID
,SerialNumber
,AssetTag
,LoanTerm
,PartNumber
,Notes
,CriticalNotes
,ShippingNotes
,ReceivingNotes
,Description
,Details
,Attachments
,Manuals)
SELECT LoanerKey
,BCPartNumber
,Manufacturer
,Model
,Modality
,Status
,Location
,ShelvingKey
,CalDate
,CalDue
,BCID
,SerialNumber
,AssetTag
,LoanTerm
,PartNumber
,Notes
,CriticalNotes
,ShippingNotes
,ReceivingNotes
,Description
,Details
,Attachments
,Manuals
,BCPartNumber
,Manufacturer
,Model
,Modality
,Status
,Location
,ShelvingKey
,CalDate
,CalDue
,BCID
,SerialNumber
,AssetTag
,LoanTerm
,PartNumber
,Notes
,CriticalNotes
,ShippingNotes
,ReceivingNotes
,Description
,Details
,Attachments
,Manuals
from LoanerItems
于 2013-06-14T15:34:26.863 に答える