Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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 如何在MonetDB中发现给定索引或键的列_Sql_Monetdb - Fatal编程技术网

Sql 如何在MonetDB中发现给定索引或键的列

Sql 如何在MonetDB中发现给定索引或键的列,sql,monetdb,Sql,Monetdb,MonetDB似乎支持一组相当全面的系统目录视图,以便发现数据库的模式结构。不幸的是,我似乎找不到一个SQL查询来获取给定键或索引的列集。以下是表格报告的系统表格/视图: 模式 类型 功能 args 序列 依赖关系 连接 _桌子 _纵队 钥匙 idxs 触发 物体 桌子 柱 数据库用户信息 使用者 用户角色 作者 特权 查询历史 通话记录 克雷洛格 系统功能 我尝试了依赖项,但ID似乎不匹配。顺便说一句,我确实试着查找源代码,但我还没有找到系统视图的创建和维护位置。两年半后,因为我对这个问题很感

MonetDB似乎支持一组相当全面的系统目录视图,以便发现数据库的模式结构。不幸的是,我似乎找不到一个SQL查询来获取给定键或索引的列集。以下是表格报告的系统表格/视图:

模式 类型 功能 args 序列 依赖关系 连接 _桌子 _纵队 钥匙 idxs 触发 物体 桌子 柱 数据库用户信息 使用者 用户角色 作者 特权 查询历史 通话记录 克雷洛格 系统功能


我尝试了依赖项,但ID似乎不匹配。顺便说一句,我确实试着查找源代码,但我还没有找到系统视图的创建和维护位置。

两年半后,因为我对这个问题很感兴趣:使用命名不好的“objects”表确实可以找到给定键的列

例如,考虑下表

CREATE TABLE indextest (a INT, b INT);
ALTER TABLE indextest ADD CONSTRAINT indextest_pk PRIMARY KEY (a);
ALTER TABLE indextest ADD CONSTRAINT indextest_uq UNIQUE (a, b);                                                                           
现在让我们找出哪些列属于
indextest\u uq

SELECT idxs.id AS index_id, columns.id AS column_id, tables.name AS table_name, columns.name AS column_name, columns.type AS column_type 
FROM idxs JOIN objects ON idxs.id=objects.id JOIN tables ON idxs.table_id=tables.id JOIN columns ON idxs.table_id=columns.table_id AND objects.name=columns.name 
WHERE idxs.name='indextest_uq';
此查询的结果如下所示:

+----------+-----------+------------+-------------+-------------+
| index_id | column_id | table_name | column_name | column_type |
+==========+===========+============+=============+=============+
|     6446 |      6438 | indextest  | a           | int         |
|     6446 |      6439 | indextest  | b           | int         |
+----------+-----------+------------+-------------+-------------+
显然,通过扩展查询的
SELECT
部分,可以包含
表中的更多信息