Хорошо, поэтому быстрый вопрос SQL здесь (с использованием sql-server-2008).
У меня есть таблица сопоставления names
со следующими столбцами
ID
DisplayName
Сначала я хочу сделать SELECT [ID] FROM [names] WHERE [DisplayName] = 'chuck';
НО, если имя «Чак» не существует в базе данных, я хотел бы создать его и вернуть автоматически увеличенное значение ID
.
Мне было интересно, есть ли в SQL какие-то встроенные средства, чтобы сделать это простым способом, или мне нужно идти по длинному маршруту?
длинный путь примерно такой
SELECT COUNT(ID) AS count, ID FROM names WHERE DisplayName='chuck'
IF(count > 0)
SELECT ID as ReturnID;
ELSE
BEGIN
INSERT INTO names(DisplayName) values('chuck');
SELECT scope_identity() as ReturnID;
END
Я не проверял это последнее утверждение, но я предполагаю, что долгий путь будет чем-то вроде этого.Если нет встроенного способа, я был бы признателен, если бы кто-то мог просто исправить это утверждение (поскольку я уверен, что оно не совсем правильно).