【问题标题】:How to insert data in a batch? [duplicate]如何批量插入数据? [复制]
【发布时间】:2016-03-27 05:50:14
【问题描述】:

在 MySQL 中,我可以触发这些语句以一次性插入 5 行:

CREATE TABLE t (id int primary key auto_increment)
INSERT INTO t VALUES (DEFAULT),(DEFAULT),(DEFAULT),(DEFAULT),(DEFAULT)

如何在 MS SQL Server 中做同样的事情?

附:建议的副本不能解决问题的原因是它具有包含非标识列的表。我的表只有一个标识列。

【问题讨论】:

  • 如果您使用的是 SQL Server 2008 或更高版本,您的问题将有效。对于 2005 年及更早的年份,您必须获得更多创意。无论如何,这个问题是一个骗局。
  • @TimBiegeleisen 它不起作用。我刚试过。如果你能让它工作,请告诉我如何。
  • @TimBiegeleisen 具体错误是An explicit value for the identity column in table 't' can only be specified when a column list is used and IDENTITY_INSERT is ON.
  • 您仍然没有告诉我们您使用的是什么版本的 SQL Server。 IMO 真的很糟糕。
  • 您可以尝试关闭自动增量,但随后您将失去 SQL Server 跟踪id 的功能。也许你应该考虑改变你的架构。

标签: sql sql-server insert


【解决方案1】:

如果你有这个定义:

CREATE TABLE t (id int IDENTITY(1,1) PRIMARY KEY)

那么你可以这样做:

INSERT t DEFAULT VALUES
INSERT t DEFAULT VALUES
INSERT t DEFAULT VALUES
INSERT t DEFAULT VALUES
INSERT t DEFAULT VALUES

【讨论】:

  • 我正在尝试批量操作。例如。 5 行,单次插入。就像我在 MySQL 上做的那样。
  • @AngryHacker 我认为 SQL Server 在尝试将 only 插入自动递增列时不允许这样做。如果您有其他列,则可以使用 MySQL 样式的语法。
猜你喜欢
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多