我的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
但这不起作用,我得不到任何回报。
有什么想法吗?
非常感谢!
答案 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');