当前位置: 首页 > 面试题库 >

MySQL:动态确定表的主键

朱睿
2023-03-14
问题内容

我正在用PHP生成这样的SQL查询:

$sql = sprintf("UPDATE %s SET %s = %s WHERE %s = %s", ...);

由于此查询的几乎每个部分都是动态的,因此我需要一种动态确定表的主键的方法,这样我就可以进行如下查询:

$sql = sprintf("UPDATE %s SET %s=%s WHERE PRIMARY_KEY = %s", ...);

表的主键是否有MySQL关键字,或者有获取该关键字的方法?

我以前使用过information_schema数据库来查找这样的信息,但是如果我不必求助于此,那将是很好的。


问题答案:
SHOW INDEX FROM <tablename>

您想要其中Key_name = PRIMARY的行

http://dev.mysql.com/doc/refman/5.0/en/show-
index.html

您可能需要缓存结果-在您可能需要使用的所有表上运行SHOW语句需要花费一些时间。



 类似资料:
  • 问题内容: 我想使用TSQL确定表的主键(存储过程或系统表都可以)。SQL Server(2005或2008)中是否存在这种机制? 问题答案: 这应该使您开始:

  • 问题内容: 我在mysql上创建数据库。首先创建主体表,每个表平均有30列。日志表的标准是引用表的pk加上每列*2。像这样: 参考表: 日志表: 现在,我想要创建一个过程,在该过程中,我将表名作为参数传递,并生成表日志查询并执行它。 做这个的最好方式是什么? 问题答案: 为了使一个字符串代表一个表(或数据库)名称,您将需要用变量连接查询字符串,并在存储过程中准备/执行一条语句。这是一个基本示例。

  • 问题内容: 我希望能够以某种方式在SQL Server 2005中执行的操作是以表名作为输入来确定组成主键的所有字段。似乎没有这个领域。关于在哪里看有什么想法? 问题答案: 我在编写的代码生成器中使用它来获取主键:

  • 问题内容: 在我的网站上,我正在创建发票功能。发票具有静态信息:公司信息和收件人信息。但是它也具有动态信息:小时数,描述,总金额等。客户可以使用上面的动态信息添加多行。 现在我的问题是,如何将其实现到数据库中? 目前,我有一个名为“发票”的表,其中的列将包含上面的所有信息。但是通过这种方式,行将具有不必要的信息,例如公司和收货人信息,而实际上每个发票只需要插入一次即可。 你们认为我将如何解决这个问

  • 问题内容: 我试图获得一个带有动态列的数据透视表。当user_id是一个字符串时,它可以正常工作,但是如果它是一个int,那么它似乎会失败 到目前为止,在过去的问题帮助下,我得到的是: 参见:http : //sqlfiddle.com/#!2/eab24/1 我确定这很简单,但是我想念什么呢? 谢谢 问题答案: 由于值在其中,因此您要将它们设为列名,因此必须将值包装在反引号中 该SQL将看起来像

  • 问题内容: 我目前有一个使用以下sql的硬编码视图: 我的问题是是否可以从角色表中的记录动态生成角色列。 问题答案: 您 可以 做您想做的事,但是我不确定 为什么 要这么做。获得动态列别名后,如何计划引用它们?也就是说,如果您从数据库中提取列别名,那么您将如何使用它们呢?我可能错过了您提出问题的原因。 无论如何,我假设您具有这样的结构: 由此,您可以获得有关用户及其角色的信息: 您还可以为特定角色