INSERT INTO / SELECT仅插入一行

时间:2013-04-09 04:03:36

标签: sql-server sql-insert

我的SQL插入/ select有问题。

INSERT INTO TBLPMHISTORY(RELEQUIPMENTID,DTETHISPMDUE,STRCAMPUS,STRROOM)
(SELECT INTEQUIPMENTID,DTEPMDATENEXTDUE,STRCAMPUS,STRROOM
FROM TBLEQUIPMENT
WHERE DTEPMDATENEXTDUE BETWEEN GETDATE() AND DATEADD("DAY",21,GETDATE()))

它似乎只在新表中插入一行,但是当我自己运行语句的SELECT部分​​时,它返回84行。

我不确定是否存在限制批量插入的内容,但是我们非常感谢任何帮助。

创建PMHISTORY表的代码如下:

CREATE TABLE TBLPMHISTORY( 
INTPMHISTORYID INT NOT NULL PRIMARY KEY IDENTITY, 
RELEQUIPMENTID INT NOT NULL FOREIGN KEY REFERENCES TBLEQUIPMENT(INTEQUIPMENTID), 
STRDESCRIPTION VARCHAR(64) DEFAULT 'Preventative Maintenance', 
DTETHISPMDUE DATETIME, 
YSNPMDONE BIT DEFAULT '0', 
YSNPMCONVERTEDTOJOB BIT DEFAULT '0', 
INTRELATEDJOBNUMBER INT DEFAULT '0', 
STRCAMPUS VARCHAR(30), 
STRROOM VARCHAR(30)) 

CREATE UNIQUE NONCLUSTERED INDEX [IX_PMHistory_DTETHISPMDUE] ON TBLPMHISTORY( DTETHISPMDUE) WITH (IGNORE_DUP_KEY = ON) ON [PRIMARY]

2 个答案:

答案 0 :(得分:0)

您的表TBLPMHISTORY中可能存在约束,例如DTETHISPMDUE不能为null,而select可能包含该列的空值。它不一定是该列,它可以是目标表中的任何其他列。您应该检查源表中的无效记录。

答案 1 :(得分:0)

您的索引正在使用IGNORE_DUP_KEY = ON

这意味着将忽略违反此索引唯一性的插入行,即不插入。

通常,您可以将此选项设置为OFF