带默认约束的Bulk Insert报错:行构造器列数不一致问题咨询
问题原因与解决办法
这个错误和默认约束无关,是批量插入时每一行的参数数量与你指定的列数不匹配导致的。你在INSERT语句里明确列出了4列(ID、Name、EmailID、GenderID),前面三行都对应给出了4个值,但最后一行只提供了3个,数据库无法识别缺失的是哪一列,因此抛出该错误。
两种解决方法:
方法一:给需要用默认值的行明确写DEFAULT关键字
保持列列表不变,在最后一行的GenderID位置填入DEFAULT,数据库会自动调用你设置的默认约束值:
insert into tblPerson (ID,[Name],EmailID,GenderID)values (4,'Riya','riya@.com',2), (5,'Raj','raj@.com',3), (6,'Tisha','tisha@.com',2), (7,'Stephen','stephen@.com',DEFAULT);
方法二:拆分INSERT语句
把需要指定GenderID的行和使用默认值的行分开插入,后者的列列表里不包含GenderID,数据库会自动应用默认约束:
-- 插入指定GenderID的行 insert into tblPerson (ID,[Name],EmailID,GenderID)values (4,'Riya','riya@.com',2), (5,'Raj','raj@.com',3), (6,'Tisha','tisha@.com',2); -- 插入使用默认GenderID的行 insert into tblPerson (ID,[Name],EmailID)values (7,'Stephen','stephen@.com');
内容的提问来源于stack exchange,提问作者Vasant Raval
相关产品推荐
相关产品推荐

