古怪的SELECT / INSERT语句是第一次和第三次,但不是第二次?

时间:2011-12-21 17:00:42

标签: php sql-server-2005

我有一个我在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 个答案:

答案 0 :(得分:1)

尝试下面

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
相关问题