Insert Into Table()由于错误,值(),()部分插入

时间:2015-02-09 18:38:51

标签: sql-server

有没有办法部分插入类似于

的语句
INSERT INTO Classes (ID, Name, Subject)
VALUES (1, 'John', 'Math'),
(2, 'Chris', 'English')
(3, 'Chris', 'Mathematics')

鉴于上述陈述,如果类中的Subject是varchar(10),则由于数学有11个字符,整个语句将失败。我希望成功的插入继续进行,失败的插入被忽略,或者更好地记录在一个单独的表中。

有没有办法做到这一点?目前,该应用程序一次执行一个插入,从平面文件读取。有时这些文件有100,000多条记录。最后,我想在插入数据库之前在应用程序中进行数据验证,但这种更改不会被批准一段时间。同时,我可以尝试通过连接VALUES集来批量执行此操作,但如果其中任何一个失败,则整个语句都会失败。

1 个答案:

答案 0 :(得分:0)

在单个插入命令中无法部分插入。

部分插入的方式是编写单独的插入语句:

INSERT INTO Classes (ID, Name, Subject) VALUES (1, 'John', 'Math'); -- 通过

INSERT INTO Classes (ID, Name, Subject) VALUES (2, 'Chris', 'English'); -- 通过

INSERT INTO Classes (ID, Name, Subject) VALUES (3, 'Chris', 'Mathematics'); -- 刹车