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