Причудливый оператор SELECT / INSERT работает первый и третий раз, но не второй? - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть оператор, который я использую в PHP, который вытянет число, если оно существует, или, если это не так, создаст строку, а затем извлечет номер из созданной строки.

Следующий код работает, но, как говорится в заголовке ... не во второй раз. Прежде всего позвольте мне уточнить, это работает каждый раз, если строка существует. Но когда создается строка и возвращается число, в следующий раз (снова с новыми переменными) произойдет сбой, но затем (снова используя те же новые переменные) в следующий раз будет работать правильно. Это верно как в php, так и в sql средах.

SELECT id FROM table1 WHERE authID = 'DOEJON' AND periodID = 55 
IF @@ROWCOUNT = 0 INSERT INTO table1 (authID, periodID) VALUES ('DOEJON', 55);
SELECT id FROM table1 WHERE timeID = SCOPE_IDENTITY()

похоже, что какое-то обновление связано с утверждением - как мне каждый раз получать желаемые результаты? мысли?

Спасибо за ваше внимание.

1 Ответ

1 голос
/ 21 декабря 2011

Попробуйте ниже

Declare @ID Int

SELECT @ID = id FROM table1 WHERE authID = 'DOEJON' AND periodID = 55  

If (id is null)
Begin
    INSERT INTO table1 (authID, periodID) VALUES ('DOEJON', 55); 
    Set @ID = SCOPE_IDENTITY() 
End
Select @ID As ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...