SQL:选择数据库的表中的最后一个id

时间:2013-06-11 13:39:05

标签: php sql tsql identity

我的php脚本中有以下查询:

SELECT last_value FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'MYTABLE' AND last_value IS NOT NULL

这很好用,它返回MYTABLE的最后一个id,这就是我需要的。

但是,由于我将拥有多个数据库,我应该修改查询以选择MYTABLE所在的数据库。

我在做:

SELECT last_value FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'mydatabase.dbo.MYTABLE' AND last_value IS NOT NULL

但这不起作用,我得不到任何回报。

有什么想法吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

执行SQL语句时,它在您在连接上指定的数据库的上下文中运行。要查询其他数据库,您应该更改数据库上下文。 试试这个:

USE MyDatabase;

SELECT last_value FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'MYTABLE' AND last_value IS NOT NULL

答案 1 :(得分:0)

如果需要将数据库名称作为变量传递IDENT_CURRENT,则接受数据库限定的对象名称。 e.g:

SELECT  IDENT_CURRENT('mydatabase.dbo.MYTABLE');

除了不相关之外,最好使用:

WHERE OBJECT_ID = OBJECT_ID(N'MYTABLE');

而不是

WHERE OBJECT_NAME(OBJECT_ID) = 'MYTABLE'

由于MYTABLE不在默认架构中,因此会失败,请考虑表MYSCHEMA.MYTABLE。这不返回任何行

WHERE OBJECT_NAME(OBJECT_ID) = 'MYSCHEMA.MYTABLE'

这样会:

WHERE OBJECT_ID = OBJECT_ID(N'MYSCHEMA.MYTABLE');