Как сгенерировать и вручную вставить уникальный идентификатор в sql-сервер?
Я пытаюсь вручную создать нового пользователя в своей таблице, но невозможно сгенерировать тип "UniqueIdentifier" без исключения...
Вот мой пример:
DECLARE @id uniqueidentifier
SET @id = NEWID()
INSERT INTO [dbo].[aspnet_Users]
([ApplicationId]
,[UserId]
,[UserName]
,[LoweredUserName]
,[LastName]
,[FirstName]
,[IsAnonymous]
,[LastActivityDate]
,[Culture])
VALUES
('ARMS'
,@id
,'Admin'
,'admin'
,'lastname'
,'firstname'
,0
,'2013-01-01 00:00:00'
,'en')
GO
Исключение Trow ->
Сообщение 8169, уровень 16, состояние 2, строка 4
Не удалось преобразовать строку символов в uniqueidentifier.
Я использую метод NEWID(), но он не работает...
http://www.dailycoding.com/Posts/generate_new_guid_uniqueidentifier_in_sql_server.aspx
Ответы
Ответ 1
ApplicationId должен иметь тип UniqueIdentifier
. Ваш код отлично работает, если вы это сделаете:
DECLARE @TTEST TABLE
(
TEST UNIQUEIDENTIFIER
)
DECLARE @UNIQUEX UNIQUEIDENTIFIER
SET @UNIQUEX = NEWID();
INSERT INTO @TTEST
(TEST)
VALUES
(@UNIQUEX);
SELECT * FROM @TTEST
Поэтому я бы сказал, что можно с уверенностью предположить, что ApplicationId
не является правильным типом данных.
Ответ 2
Пожалуйста, проверьте тип столбца ApplicationId в таблице aspnet_Users, тип данных столбца ApplicationId должен быть уникальным идентификатором.
* Ваш заказ параметра передан неправильно,
Параметр @id должен передаваться как первый аргумент, но в вашем script он помещается во второй аргумент.. *
Так возникает ошибка.
Пожалуйста, обратитесь к образцу script:
DECLARE @id uniqueidentifier
SET @id = NEWID()
Create Table #temp1(AppId uniqueidentifier)
insert into #temp1 values(@id)
Select * from #temp1
Drop Table #temp1