Как вставить уникальный ключ в таблицу? - PullRequest
2 голосов
/ 12 марта 2010

Я хочу вставить данные в таблицу, где я не знаю следующий уникальный ключ, который мне нужен. Я не уверен, как отформатировать мой запрос INSERT, чтобы значение поля Key было на 1 больше максимального значения для ключа в таблице. Я знаю, что это взлом, но я просто провожу быстрый тест для базы данных и должен убедиться, что всегда отправляю уникальный ключ.

Вот SQL, который у меня есть:

INSERT INTO [CMS2000].[dbo].[aDataTypesTest]
           ([KeyFld]
           ,[Int1])
     VALUES
           ((SELECT Max([KeyFld]) FROM [dbo].[aDataTypesTest]) + 1
           ,1)

какие ошибки с:

Сообщение 1046, Уровень 15, Состояние 1, Строка 5 Подзапросы не допускаются в этом контексте. Допускаются только скалярные выражения.

Я не могу изменить базовую таблицу базы данных. Что мне нужно сделать, чтобы обеспечить уникальную вставку в мой INSERT код SQL?

Ответы [ 2 ]

3 голосов
/ 12 марта 2010

Вы можете использовать другой синтаксис INSERT:

INSERT INTO [CMS2000].[dbo].[aDataTypesTest] 
       ([KeyFld] 
       ,[Int1]) 
SELECT Max([KeyFld]) + 1, 1 FROM [dbo].[aDataTypesTest]

Извините, вы не можете изменить базу данных. Ты прав; это хак.

3 голосов
/ 12 марта 2010
INSERT INTO [CMS2000].[dbo].[aDataTypesTest]
           ([KeyFld]
           ,[Int1])
SELECT Max([KeyFld]) + 1, 1 FROM [dbo].[aDataTypesTest]

Но почему бы не использовать свойство IDENTITY для KeyFld, а затем либо SCOPE_IDENTITY (), либо предложение OUTPUT? (ОК, без изменений схемы. Облом)

...