繁体   English   中英

如何在数据库级别获取primary_key的列名?

[英]How to get column name for primary_key at database level?

我需要在数据库级别获取包含主键的列名。

Model.primary_key返回的models_id列名称不是数据库级别的主键。 无论如何,我无法更改迁移或修改表。

我目前可以通过MySqlAdapter使用ActiveRecord::Base.connection.primary_key('table_name')来获取它

但这不适用于具有复合主键的表。 如果表包含复合主键,则返回nil

有什么办法可以通过编程实现这一目标吗?

ActiveRecord不支持开箱即用的复合主键。

您需要安装Composite_primary_keys gem ,然后,如果主键是复合键,则ActiveRecord::Base.connection.primary_key('table_name')将返回一个列名数组。

  1. 执行查询:

     SHOW COLUMNS FROM table_name; 

然后查看返回的所有行,其中名为KEY的列的值为'PRI' 然后, Field列将为您提供表中构成表主键一部分的列名。

  1. 或者:

     SELECT COLUMN_NAME FROM information_schema WHERE TABLE_SCHEMA='database_name' AND TABLE_NAME = 'table_name' AND COLUMN_KEY = 'PRI'; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM