【问题标题】:SQL statement to insert record into table that has identity column?将记录插入到具有标识列的表中的 SQL 语句?
【发布时间】:2009-09-08 18:49:47
【问题描述】:

我正在尝试手动向我的 SQL Server 数据表中插入一行。该表有 5 列、1 个标识和 4 个数据列。我查看了this post,但是当我运行所选答案的查询时(当然是在用我的表名替换“GroupTable”之后),我的 SQL Server 2005 管理工作室崩溃了。

我尝试了以下语句的变体,但到目前为止显然没有运气:

INSERT INTO MyTable (id, col1, col2, col3, col4)
VALUES (0, 'Column 1 Value', 'Column 2 Value', 'Column 3 Value', 'Column 4 Value')

INSERT INTO MyTable (col1, col2, col3, col4)
VALUES ('Column 1 Value', 'Column 2 Value', 'Column 3 Value', 'Column 4 Value')

任何指针将不胜感激。

【问题讨论】:

  • 听起来您正在使用 Microsoft 的 SQL Server 2005 产品中的 SQL Server Management Studio 来管理 MySQL。是吗?
  • 不,问题被错误地标记为 MySQL。我正在使用 MSSQL 2005。

标签: sql sql-server sql-server-2005


【解决方案1】:

通常,如果设置了 id 列,则省略该列会生成一个新的自动 ID。在您的情况下,您可以使用

SET IDENTITY_INSERT MyTable ON;

INSERT INTO MyTable (id, col1, col2, col3, col4)
VALUES (4567, 'Value1', 'Value2', 'Value3', 'Value4');

SET IDENTITY_INSERT MyTable OFF;

【讨论】:

  • 好吧,我的第二个查询应该可以工作,因为 id 列是自动递增的并且是一个标识?
  • 是的,如果该列确实是使用 ID INT IDENTITY NOT NULL PRIMARY KEY(或类似名称)创建的。您的表定义中可能缺少某些内容。
  • 这就是它的创建方式:[id] [int] IDENTITY(1,1) NOT NULL。如果我尝试将PRIMARY KEY 添加到该行的末尾,则会收到一条错误消息,指出我无法将多个主键约束添加到表“MyTable”。表定义中还有一段:CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED ( [id] ASC ),这是将ID列定义为PK的原因吗?
  • PRIMARY KEYCONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED ( [id] ASC ) 的缩写。所以你确实有一个自动递增的主键。奇怪的。您能否更明确地说明“崩溃”? Sql 错误到底是什么?
  • Pierre:我遇到的崩溃不是来自我的查询,而是来自我发布的链接的答案 (INSERT INTO GroupTable DEFAULT VALUES)。我一定是打错了什么,因为我刚刚再次运行查询并成功完成。
【解决方案2】:

正如其他人所说,我认为第二个应该适合您,但是如果您在运行查询时使管理工作室崩溃,无论它是否损坏,您的问题都比格式错误的 sql 更大查询。

工作室不应该崩溃,即使你写了一些非常糟糕的 sql...它应该只是给你一个错误消息并继续前进。如果这些错误对您来说很常见,您可能会考虑重新安装管理工作室。

【讨论】:

  • 我的第二个查询不会使应用程序崩溃,我链接的帖子中的查询会。这是第一次发生这种奇怪的事情。
【解决方案3】:

我第一次听说 mysql 有一个 SQL 2005 管理客户端,但无论如何您是否尝试过从命令行直接登录到数据库并从那里执行插入语句?

【讨论】:

  • 不是 MySQL,是 MSSQL 2005。别人编辑了我的帖子并添加了 MySQL 标签。
【解决方案4】:

不确定您所说的“崩溃”是什么意思,但是,如果您在表格上正确设置了身份规范,则第二条语句应该可以工作。右键单击 mangement studio 中的表并查看 id 列的属性。 isIdentity 应为“Yes”,并且标识增量应为 1。

【讨论】:

  • 已验证是身份。同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多