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


SQL: last id from a table selecting database

我有以下查询在我的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

但是这行不通,我没有得到任何回报。

任何想法?

非常感谢!

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

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

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

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');