В основном вы вставляя запись, если она Безразлично 't уже существует и затем возвращает идентификатор записи, которая была либо вставлена, либо уже была там.
Я добавил комментарии к ниже код:
DECLARE @CatalogID int --Create a variable to hold the Catalog id
INSERT [Catalog] ([Name]) --Inserting into the catalog table
SELECT @Catalog --The SELECT will only return a value if a matching record does not exist
WHERE NOT EXISTS (SELECT [Name] FROM [Catalog] WHERE [Name] = @Catalog)
SELECT @CatalogID = ID FROM [Catalog] WHERE [Name] = @Catalog --Returns the ID of the catalog record
Для чего это стоит, можно написать этот запрос наоборот, то есть выбрав соответствующую запись из catalog
и если ничего не возвращенный затем выполнение вставки, но этот подход превосходит то, что он не уязвим для «состояния гонки», когда два процесса могут пытаться вставить одну и ту же запись одновременно.
спасибо, спасибо за помощь, вы подключили точки для меня !!!! – user8189
Вы должны отметить его ответ как правильный ответ. –
yaeh почему бы и нет !!! , я бы с удовольствием, но как вы отмечаете ответ как правильный ответ? простите меня, но я добрая к этому техническому форуму, появилась кнопка внизу, с текстом, спрашивающим «был ли этот пост полезен для вас», я уже щелкнул его, !!! ???? – user8189