t-sql - 如何插入只有一个 IDENTITY 列的表 (SQL Server CE)

标签 t-sql sql-server-ce

我正在尝试在 SQL Server CE 3.5 中的一个 IDENTITY 列表中插入一个值。我尝试了以下方法:

INSERT Target DEFAULT VALUES
INSERT Target (ID) VALUES (DEFAULT)
INSERT Target (ID) VALUES ()

但是它们都不起作用。这是我用来创建表的 SQL 命令(使用 SQL Server Management Studio):

CREATE TABLE Target(
ID int NOT NULL IDENTITY (1, 1) PRIMARY KEY
);

Microsoft 帮助网站 ( http://msdn.microsoft.com/en-us/library/ms174633%28SQL.90%29.aspx ) 提到 DEFAULT 值对于标识列无效,但没有提及任何替代方案。

他们提到了一些有关 uniqueidentifier 和 ROWGUID 的内容,但我无法使其工作。

如果您能提供有关如何解决此问题的指示或有关 sql server CE 的有效 sql 命令的文档链接,我将不胜感激。

谢谢

最佳答案

使用默认值适用于标准 SQL 版本上的标识列。我看不出它在 CE 上不起作用的任何原因。

在你的情况下,你会做这样的事情:

Insert Into Target
Default Values

编辑:

此问题似乎是 SQL CE 特有的。

我建议的唯一一件事就是向表中添加另一列,例如 DateInserted。

Insert Into Target (DateInserted)
Values (getdate())

然后应该插入一个新行,从而生成一个新 ID。

如果您可以更改表结构,那么您可以使用 UniqueIdentifier。

Create Table Target
(
IDColumn uniqueidentifier not null
)

Insert Into Target
Values (newId())

关于t-sql - 如何插入只有一个 IDENTITY 列的表 (SQL Server CE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2558646/

相关文章:

sql - 聚合 SQL 函数以从每个分组中仅获取一个

c# - 如何在 C# 中对 nvarchar 列进行排序

language-agnostic - 如何有效地在数据库中存储大量行

windows-mobile - Windows Mobile 同步错误

t-sql - 如何在 JOIN 的 WHERE 子句中使用列名作为 LIKE 语句的一部分

sql-server - 需要一些帮助来理解 SQL Server 2012 查询计划

sql - 选择所有列,但也可以按不同的列和最旧的日期选择

sql-server - 在同一台计算机上从 SQL Server Express 切换到 SQL Server Developer 版本

c# - 为什么我不能将记录插入到我的 SQL Compact 3.5 数据库中?

.net - SQL Server CE 和 Visual Studio 2013