2010-04-01 67 views
2

我想在SQL Server CE 3.5的一個IDENTITY列表中插入一個值。我試過以下:如何插入只有一個IDENTITY列的表(SQL Server CE)

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)提到,默認值不適用於標識列但他們不提任何替代。

他們提到了有關uniqueidentifier和ROWGUID的一些內容,但是我一直無法使它工作。

我將不勝感激關於如何解決這個問題的任何指針或有關SQL Server CE的有效sql命令文檔的鏈接。

謝謝

回答

4

使用默認值適用於標準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()) 
+0

你好巴里我試過那個查詢,它沒有工作,它說,在默認令牌有錯誤。 – Hei 2010-04-01 07:47:13

+0

是的,絕對 - INSERT INTO Target DEFAULT VALUES'絕對適用於SQL Server 2008 - 也許這是SQL Server CE特有的問題? – 2010-04-01 07:57:00

+0

@Barry謝謝你的回答,第一個解決方案會工作,但我試圖避免改變表格。第二種解決方案的工作原理也是如此,但它插入了非常長的非順序ID – Hei 2010-04-01 12:06:37