Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获取Sybase中所有表的主键_Sql_Sybase_Sap Ase_Data Dictionary - Fatal编程技术网

Sql 如何获取Sybase中所有表的主键

Sql 如何获取Sybase中所有表的主键,sql,sybase,sap-ase,data-dictionary,Sql,Sybase,Sap Ase,Data Dictionary,我需要从sybase ase数据库中的所有用户表创建数据字典。我无法安装Sybase PowerDesigner之类的工具,因此我必须使用SQL查询使之成为可能 我在论坛的帮助下编写了这个查询,以显示表名、列名、数据类型、大小和NOTNULL约束。但是我无法找到该列是否是主键,或者是否是集群主键的一部分 SELECT O.name as "Table", C.name as "Column", C.length as "Length",

我需要从sybase ase数据库中的所有用户表创建数据字典。我无法安装Sybase PowerDesigner之类的工具,因此我必须使用SQL查询使之成为可能

我在论坛的帮助下编写了这个查询,以显示表名、列名、数据类型、大小和NOTNULL约束。但是我无法找到该列是否是主键,或者是否是集群主键的一部分

    SELECT O.name as "Table",
            C.name as "Column", 
            C.length as "Length",
            T.name as "Datatype",
            C.status as "Allow Null",
            CASE C.status
                WHEN 8 THEN 'NULL' 
                WHEN 0 THEN 'NOT NULL' 
            END as "NULLS"
FROM        sysobjects O,              
            syscolumns C,
            systypes T
WHERE     O.id = C.id
AND       O.type = "U"             -- user tables only
AND       C.usertype = T.usertype 
ORDER BY  O.name, C.colid

这里的任何人都可以帮助我与所需的表进行必要的连接,以获得指示其主键状态的所需标志。我已经阅读了表格和文档,但无法找到对我有利的状态。

请尝试以下代码:

    SELECT O.name as "Table",
            C.name as "Column", 
            C.length as "Length",
            T.name as "Datatype",
            C.status as "Allow Null",
            CASE C.status
                WHEN 8 THEN 'NULL' 
                WHEN 0 THEN 'NOT NULL' 
            END as "NULLS",
            ISNULL((select "Y" as PK_FLAG from syskeys K where O.id=K.id
            and K.type = 1 and (C.colid =K.key1 or C.colid =K.key2 OR C.colid =K.key3  OR C.colid =K.key4 OR C.colid =K.key5 OR C.colid =K.key6 OR C.colid =K.key7 Or C.colid =K.key8 )),"N") as Primary_Key_Flag
FROM        sysobjects O,              
            syscolumns C,
            systypes T
WHERE     O.id = C.id
AND       O.type = "U"             -- user tables only
AND       C.usertype = T.usertype 
ORDER BY  O.name, C.colid

这应该会有帮助。您有什么原因不能使用
ddlgen