您的位置:程序门 -> powerbuilder -> 数据库相关



如何动态找sybase中表的主键


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何动态找sybase中表的主键[已结贴,结贴人:boygong]
发表于:2007-06-07 09:38:06 楼主
我写了如下代码,可是找不出主键,返回的ls_key= "no ",有没有好的办法???????????????
ls_sql   =   "select   *   from   "   +   表名
ls_pre   =   "style(type=grid) "

ls_dwsyntax   =   sqlca.syntaxfromsql(ls_sql,   ls_pre,   ls_error)
dw_1.create(ls_dwsyntax,ls_error)

colcount=integer(dw_1.describe( "datawindow.column.count "))      
for   col=1   to   colcount      
ls_key   =   dw_1.describe( "# "+string(col)+ ".key ")
if   ls_key   = "yes "       then      
                //说明是主键      
    ls_pri   =   dw_1.describe( "# "+string(col)+ ".name ")
end     if      
next
发表于:2007-06-07 09:57:501楼 得分:0
回sysindex查吧,估计没别的直接办法。
发表于:2007-06-07 10:13:152楼 得分:0
在sysindex中怎么查,我只找到以下语句,可惜不懂......

select   user_name(o.uid),   object_name(i.id),i.name,s.name  
from   sysindexes   i,sysobjects   o,syssegments   s  
where   i.id=o.id   and   i.status2   &   2   =   2   and  
i.status   &   2048   =   2048   and  
i.indid> 0   and   i.segment=s.segment  
order   by   user_name(o.uid),object_name(i.id),i.name  
发表于:2007-06-07 12:37:073楼 得分:20
啥地方不懂啊?
用sp_helpconstraint   <tablename>

select   name   from   sysindexes   where   status2   &   2   =   2  
有可能连sysobjects取得更多信息
发表于:2007-06-07 14:18:304楼 得分:0
选出的是主键的名字吧,我想得到主键到底代表的是哪一个字段或哪几个字段....
发表于:2007-07-13 15:46:365楼 得分:0
select   name   from   sysobjects   where   type   =   'p '
发表于:2007-07-14 09:57:326楼 得分:0
if   lower(ls_key)   = "yes "       then      
ls_pri   =   dw_1.describe( "# "+string(col)+ ".name ")
end   if
发表于:2007-07-14 09:58:507楼 得分:10
注意创建时需要设置数据窗口具有update能力
发表于:2007-07-14 11:02:088楼 得分:20
偶记得系统表里应该这面的数据存放的
帮lz找找看
发表于:2007-07-14 11:08:109楼 得分:20
如果是sybase   ase数据库
在系统表syskeys表中对主键有记录的

如果lz是想要索引的话,应该在sysindedxes表中
发表于:2007-08-08 09:48:2110楼 得分:30
这种方法只是找datawindow中修改时设置的主键,可能与你数据库的不一致,而且ls_key   =   dw_1.describe( "# "+string(col)+ ".key ")似乎改成dw_1.describe( "# "+columnname+ ".key ")
比较好,但这样你需要遍历字段名


快速检索

最新资讯
热门点击