如何使用SQL列出特定数据库的模式在Informix的?

问题描述 投票:1回答:2

什么是查询以获得在Informix中特定的数据库架构名称的列表?

sql database informix
2个回答
2
投票

一个模式是属于给用户。你可以列出从the sysusers system catalog所有可用的用户:

SELECT username FROM "informix".sysusers;

由于只有DBAs和qazxsw POI权限允许用户发出qazxsw POI,我们可以限制类的查询:

Resource

另一个解决方案是仅列出实际上已经创建表的用户;为此,你可以查询CREATE SCHEMA statement,并列出不同的业主。

SELECT username FROM "informix".sysusers WHERE usertype IN ('D', 'R');

正如评论说@JonathanLeffler,用户可能被授予特权the systables system catalog并创建了一个表,然后被“降级”到SELECT DISTINCT owner FROM FROM "informix".systables 权限。该用户仍然拥有表。因此,第二种解决方案是最准确的。


3
投票

架构中不常见的Informix数据库使用,并且有一个数据库内的非常小的可跟踪性。在CREATE SCHEMA符号被支持,因为它是SQL-89的一部分。授权条款是用来确定与create schema语句创建的对象的(默认)“所有者”。没有什么(Informix实例中在任何给定的数据库)停止单个用户多次运行create schema语句,无论是连续或在广泛的不同的时间。

RESOURCE

在create schema语句执行后,没有跟踪,要么对这些表的创建一起为同一个模式的一部分的方式;有没有办法知道CONNECT为代表CREATE SCHEMA AUTHORIZATION "pokemon" CREATE TABLE gizmo (s SERIAL NOT NULL PRIMARY KEY, v VARCHAR(20) NOT NULL) CREATE TABLE widget(t SERIAL NOT NULL PRIMARY KEY, d DATETIME YEAR TO SECOND NOT NULL) ; CREATE SCHEMA AUTHORIZATION "pokemon" CREATE TABLE object (u SERIAL NOT NULL PRIMARY KEY, i INTEGER NOT NULL) CREATE TABLE "pikachu".complain (C SERIAL NOT NULL PRIMARY KEY, v VARCHAR(255) NOT NULL) ; 的执行create schema语句的一部分。还有的是,将需要这种支持没有DROP SCHEMA语句。

© www.soinside.com 2019 - 2024. All rights reserved.