2012-08-02 44 views
2

當我有一個GUID字段時,是否有方法使用INSERT語句在SQL CE中插入一行。以GUID作爲主鍵時插入語句

在C#中,我使用

ID = Guid.NewGuid() 

但在SQL控制檯,我不能找到一個關鍵字做到這一點。

我發現僅這一個:

> Insert into Customer (ID, Name) values ('f5c7181e-e117-4a98-bc06-733638a3a264','MyCustomer') 

怎麼樣,如果我有很多行插入?

+0

的可能重複[唯一標識符的身份在SQLCE?](http://stackoverflow.com/questions/8763609/uniqueidentifier-as-identity-in-sqlce) – podiluska 2012-08-02 13:09:20

+0

您可以使用從代碼生成的GUID,但你」需要將其轉換爲VARCHAR(255)。例如:「插入Customer(ID,Name)值(Convert(VARCHAR(255),'f5c7181e-e117-4a98-bc06-733638a3a264'),'MyCustomer')'。如果你不關心使用C#代碼中生成的GUID,那麼Newid()就是完美的。請參閱[Microsoft文檔](https://msdn.microsoft.com/en-us/library/ms190348.aspx)。 – 2015-11-16 19:07:24

回答

5

嘗試使用Newid()在SQL Server不能使用NEWID()函數生成GUID

1

+0

如何,因爲我使用SQL精簡版(功能非常有限) – 2012-08-02 12:59:40

+0

你有沒有嘗試過Newid()那裏?我不認爲如果它不會在那裏工作.. – 2012-08-02 13:02:36

1

若要在字段上有GUID,您可以將列的默認設置爲NEWSEQUENTIALID()。因此,舉例來說:

CREATE TABLE tableName (
    Guid UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(), 
    Name VARCHAR(100) 
); 

然後插入到表通過執行以下查詢:

INSERT INTO tableName (Name) VALUES ('Test'); 

我不知道,如果NEWSEQUENTIALID()在CE支持與否,我從來沒有用過CE開發。

0

在C#中,GUID是小寫字母,所以在SQL中使用LOWER(NEWID())如果你希望它們看起來很相似。