脚本之一INSERT INTO
编写如下。
INSERT INTO tableName (Column1, Column2,....) VALUES (value1, Value2,...), (value1, Value2,...),....
以下是我们在解析上述插入语句时面临的错误
消息 10738,级别 15,状态 1,行 1007 INSERT 语句中的行值表达式的数量超过了允许的最大行值数 1000。
我的简单问题是,我们可以更改 1000 个值的限制吗?
脚本之一INSERT INTO
编写如下。
INSERT INTO tableName (Column1, Column2,....) VALUES (value1, Value2,...), (value1, Value2,...),....
以下是我们在解析上述插入语句时面临的错误
消息 10738,级别 15,状态 1,行 1007 INSERT 语句中的行值表达式的数量超过了允许的最大行值数 1000。
我的简单问题是,我们可以更改 1000 个值的限制吗?
不可以。这种硬编码限制的存在与可能的查询计划编译时间过长有关。您可以通过在 CTE 中列出
VALUES
子句,然后INSERT
从 CTE 中 ing 来解决它,但我不建议这样做。将
INSERT
语句分成VALUES
<= 1,000 行的子句作为解决方法,或使用替代数据加载方法,例如bcp
orBULK INSERT
。基本问题可能会在 SQL Server 的未来版本中得到解决。另请参阅 Martin Smith在 Stack Overflow 上的出色回答。不推荐的解决方法:
小提琴
CTE 解决方法(没有错误,不推荐!):
小提琴
您可以使用以下语法:
等等。插入的行数没有限制。
对于使用 VALUES 选择,您可以超出 1000 的限制
查看官方文档:
https://learn.microsoft.com/en-us/sql/t-sql/queries/table-value-constructor-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
你可以这样写查询: