You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看MariaDB中表或列的主键,以及查找视图的主键?

MariaDB主键查询方案

一、查看表/列的主键信息

要查询某个表的所有主键,或验证某列是否为主键,可直接查询information_schema.key_column_usage:

SELECT 
  table_schema,
  table_name,
  column_name,
  ordinal_position
FROM information_schema.key_column_usage
WHERE
  table_schema = '你的数据库名称'
  AND table_name = '目标表名'
  AND constraint_name = 'PRIMARY';

如果要单独验证某列是否为主键,只需在WHERE条件中添加AND column_name = '目标列名'即可。

二、查找视图的主键

首先明确:视图本身没有主键——视图是基于表的虚拟结果集,并非物理存储的实体,因此MariaDB不会为视图存储主键定义。你之前的SQL语句失败,是因为试图直接从视图关联主键信息,但视图本身没有对应的主键记录。

针对你的PHP类生成器需求,可通过以下两种方式处理:

1. 获取视图依赖的底层表主键

如果视图基于单个表,或需要底层表的主键作为视图的逻辑主键,可用以下SQL关联视图的依赖表和主键信息:

SELECT 
  kcu.table_schema,
  kcu.table_name AS source_table,
  kcu.column_name,
  kcu.ordinal_position
FROM information_schema.view_table_usage vtu
JOIN information_schema.key_column_usage kcu
  ON vtu.table_schema = kcu.table_schema
  AND vtu.table_name = kcu.table_name
WHERE
  vtu.view_schema = '你的数据库名称'
  AND vtu.view_name = 'the_view'
  AND kcu.constraint_name = 'PRIMARY';

2. 推断视图的逻辑主键

如果视图是多表关联结果,或需要自定义逻辑主键,可结合SHOW COLUMNS/DESCRIBE的结果,按业务逻辑推断:

  • 优先选择名称为xxxId的字段(比如你提供的ReservationId)
  • 选择底层表的主键字段
  • 若没有明显候选,可允许手动配置(适配自动类生成的场景)

从你给出的SHOW COLUMNS结果来看,ReservationId字段为无符号整数且不可为空,符合常见主键特征,可作为该视图的逻辑主键。

内容的提问来源于stack exchange,提问作者theking2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:30:11