我想获取表的所有列,除了类型为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)
欢迎任何更好的建议或背后的理由.
我需要确定当前为我的数据库中的某些物化视图授予的权限.
对表或标准视图执行此操作的查询非常简单:
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中的某个类(例如表或函数)上获得了某个权限(例如,选择或执行)?
此刻我得到了类似的东西
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中使用的正确文本.
以下查询用于工作:
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)
应用程序已升级,但视图仍必须存在于数据库中.
我有以下查询:
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个结果.
我显然做了一件非常错事.如何实现这一目标?
编辑:我确实看过这个.它对我不起作用.
最初我想请你忘记哈希密码或与密码相关的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示例让我知道,我会废弃一些东西来更新它.
我有一个实用程序,使用以下内容来检查表的列:
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
表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字段相同的列.
我需要获取表 (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。
我有一系列存储过程从数据库中选择数据.我有一个角色(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上授予选择权限,但仍然无法使其工作.
有什么建议?
postgresql ×4
mysql ×3
privileges ×2
sql-server ×2
database ×1
innodb ×1
metadata ×1
mysql-8.0 ×1
null ×1
pagination ×1
percona ×1
performance ×1
permissions ×1
php ×1
sql ×1