标签: information-schema

具有NULL值的NOT LIKE的行为

我想获取表的所有列,除了类型为serial的列.最接近这个问题的查询我能够得到这个:

SELECT column_name FROM information_schema.columns
WHERE table_name = 'table1' AND column_default NOT LIKE 'nextval%'
Run Code Online (Sandbox Code Playgroud)

但问题是它还排除/过滤具有column_default空值的行.我不知道为什么Postgres的行为是这样的.所以我不得不将我的查询更改为以下内容:

SELECT column_name FROM information_schema.columns
WHERE table_name = 'table1'
AND ( column_default IS NULL OR column_default NOT LIKE 'nextval%')
Run Code Online (Sandbox Code Playgroud)

欢迎任何更好的建议或背后的理由.

sql postgresql null information-schema

12
推荐指数
1
解决办法
2万
查看次数

列出PostgreSQL中物化视图的授予和权限

我需要确定当前为我的数据库中的某些物化视图授予的权限.

对表或标准视图执行此操作的查询非常简单:

SELECT grantee, string_agg(privilege_type, ', ') AS privileges
FROM information_schema.table_privileges
WHERE table_schema = 'some_schema' AND table_name = 'some_table'
GROUP by grantee;
Run Code Online (Sandbox Code Playgroud)

也就是说,物化视图似乎没有类似的表格.PostgreSQL在哪里存储这些信息?

postgresql privileges materialized-views information-schema

12
推荐指数
1
解决办法
6504
查看次数

找出用户是否有权在PostgreSQL中选择/更新/ ...表/函数/ ...

建议用什么方法来确定用户是否在PostgreSQL中的某个类(例如表或函数)上获得了某个权限(例如,选择或执行)?

此刻我得到了类似的东西

aclcontains(
    someColumnWithAclitemArray,
    makeaclitem(userOid,grantorOid,someRight,false))
Run Code Online (Sandbox Code Playgroud)

但它很糟糕,因为我必须检查每一个grantorOid可能的并且每个userOid用户都可以属于.

在相关的说明中:您可以测试哪些可能的权限?我没有找到任何文档,但我想读取源代码:

INSERT
SELECT
UPDATE
DELETE
TRUNCATE
REFERENCES
TRIGGER
EXECUTE
USAGE
CREATE
CONNECT
Run Code Online (Sandbox Code Playgroud)

似乎还有一个CREATE TEMP权利,但我无法弄清楚在makeaclitem-function中使用的正确文本.

postgresql privileges metadata information-schema

11
推荐指数
2
解决办法
2万
查看次数

SQL Server中的对象名称"information_schema.columns"无效

以下查询用于工作:

select * from information_schema.columns where column_name like ...
Run Code Online (Sandbox Code Playgroud)

但现在它抛出一个错误:

Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'information_schema.columns'.
Run Code Online (Sandbox Code Playgroud)

应用程序已升级,但视图仍必须存在于数据库中.

sql-server information-schema

11
推荐指数
1
解决办法
1万
查看次数

如何限制SHOW TABLES查询

我有以下查询:

SHOW TABLES LIKE '$prefix%'
Run Code Online (Sandbox Code Playgroud)

虽然我需要对结果进行分页,但它的确如此符合我的要求.我试过了:

SHOW TABLES LIKE '$prefix%' ORDER BY Comment ASC LIMIT 0, 6
Run Code Online (Sandbox Code Playgroud)

我需要它返回具有特定前缀的所有表并按其注释排序.我希望通过LIMIT分页,每页6个结果.

我显然做了一件非常错事.如何实现这一目标?

编辑:我确实看过这个.它对我不起作用.

php mysql pagination information-schema

11
推荐指数
1
解决办法
1万
查看次数

表设计用户的信息以及登录凭据?

最初我想请你忘记哈希密码或与密码相关的w/e,这个问题与保护密码等无关,我知道/了解应该如何做.

考虑到读/写性能 - 构建一个或多个表,存储有问题数据的最佳方法是什么?

单表,例如:

表用户:id,用户名,密码,哈希,电子邮件,组,访问权限,地址,电话,父母,ts_created,ts_update

多个表,例如:

表用户:id,username,password,hash,email,group,access,ts_created,ts_update

表用户的信息:id,user_id,address,phone,parents,ts_created,ts_update

如果您的用户的信息字段可能会随着时间的推移而增长 - 您应该如何处理它?

例如新字段:birthday_date,comments,situation

有2个表在查询上比单个表慢吗?

如果在这种情况下有多个表仅用于维护具有分离数据的良好设计,那么这是否意味着它完全没有用于性能原因?

如果你想要真正的sql示例让我知道,我会废弃一些东西来更新它.

database performance database-design information-schema

10
推荐指数
1
解决办法
1万
查看次数

如何反省物化视图

我有一个实用程序,使用以下内容来检查表的列:

select column_name, data_type from information_schema.columns
        where table_name=%s
Run Code Online (Sandbox Code Playgroud)

如何将其扩展到物化视图的内省列?

postgresql materialized-views information-schema postgresql-9.3

10
推荐指数
1
解决办法
2508
查看次数

在表之间查找外键约束列信息

表A具有表B(id)的外键约束(类型).但是,type不为null,id可以为空.

我正在尝试使用information_schema构建一个查询,该查询将查看外键约束并匹配列类型和可空列以查看它们是否同步,但是我遇到逻辑问题.

select kcu.table_name, kcu.column_name, c.column_type, c.is_nullable,kcu.referenced_table_name, kcu.referenced_column_name,c.column_type, c.is_nullable
from key_column_usage kcu
inner join columns c on c.table_schema=kcu.table_schema and c.column_name=kcu.column_name and c.table_name=kcu.table_name
where kcu.referenced_table_name='Table_B' and kcu.table_name='Table_A';
Run Code Online (Sandbox Code Playgroud)

我知道这种语法不正确 - 这就是我迄今为止所能完成的所有内容.我希望能够为数据库中的每个表执行此操作,并按table_name,然后是column_name对其进行排序.它可以排除column_type和is_nullable字段相同的列.

mysql information-schema percona

9
推荐指数
1
解决办法
490
查看次数

MySQL 不更新 information_schema,除非我手动运行 ANALYZE TABLE `myTable`

我需要获取表 (InnoDB) 的最后一个 id(主键),为此我执行以下查询:

SELECT (SELECT `AUTO_INCREMENT` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = 'mySchema' AND `TABLE_NAME` = 'myTable') - 1;
Run Code Online (Sandbox Code Playgroud)

它返回错误的 AUTO_INCREMENT。问题是 information_schema 的 TABLES 表未使用当前值更新,除非我运行以下查询:

ANALYZE TABLE `myTable`;
Run Code Online (Sandbox Code Playgroud)

为什么 MySQL 不自动更新 information_schema,我该如何解决这个问题?
运行 MySQL 服务器 8.0.13 X64。

mysql innodb information-schema mysql-8.0

9
推荐指数
1
解决办法
5604
查看次数

SQL Server 2008向information_schema.columns授予权限

我有一系列存储过程从数据库中选择数据.我有一个角色(cctc_reader),它具有在程序上授予的执行权限.其中一个过程调用另一个存储过程,该过程recControl_system_option依次进行查询Information_schema.columns.

问题是在这个proc中查询

select column_name from information_schema.columns where table_name = 'recControl_manager'

不会返回任何记录.cctc_reader具有以下授权权限:

  • 每个选择过程
  • recControl_system_option

所以在理论上这应该有效.在dbo下运行时我没有问题.

如果我将db_datareader授予cctc_reader,那么查询就可以了,但我不想将读者权限授予所有表(因此我使用了存储过程).我已经尝试在一些文章中建议的主数据库中的Information_schema上授予选择权限,但仍然无法使其工作.

有什么建议?

sql-server permissions information-schema sql-server-2008

8
推荐指数
1
解决办法
9344
查看次数