我正在尝试识别构成ASE的键的列。
Sybase在此处列出了解决方案:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.5/title.htm
我在下面有一个稍微修改过的版本,但它只能起作用(就像sybase的解决方案一样)如果我查找单个表,但我想使用'in'关键字并一次查找所有表。
我可以获得一些帮助,为什么下面的解决方案不起作用?它只生成't5'表的列列表。
declare @keycnt integer
declare @objname varchar(256)
select @keycnt = keycnt, @objname = sysobjects.name from sysindexes, sysobjects
where
--sysobjects.id = object_id("t5")
--sysobjects.id = object_id("t4")
sysobjects.id in (object_id("t5"), object_id("t4"))
and sysobjects.id = sysindexes.id
and indid = 1
while @keycnt > 0
begin
select index_col(@objname, 1, @keycnt)
select @keycnt = @keycnt - 1
end
这些是我用于测试的表格:
CREATE TABLE t4(
[value] [varchar] (500) not NULL ,
CONSTRAINT pk_g4 PRIMARY KEY CLUSTERED (
[value]
)
)
CREATE TABLE t5(
[myvalue] [varchar] (500) not NULL ,
CONSTRAINT pk_g4 PRIMARY KEY CLUSTERED (
[myvalue]
)
)