0

我的 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

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

有任何想法吗?

非常感谢!

4

2 回答 2

1

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

USE MyDatabase;

SELECT last_value FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'MYTABLE' AND last_value IS NOT NULL
于 2013-06-11T13:44:46.440 回答
0

如果您需要将数据库名称作为变量传递,则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');
于 2013-06-11T13:48:03.940 回答