我有一个简单的管理员,我正在为使用 PHP 和 Mysql 的客户端创建。任何时候我想编辑或删除记录时,我都必须在查询中发送表名和记录的唯一索引(我称之为索引的自动递增字段)。这很好,除了传递一个表参数似乎是多余的,如果 Msyql 为特定数据库中的每条记录生成它自己的唯一索引。
谁知道有没有这样的东西?
推理:
我正在制作一个包含(对于本示例)两列的管理表。一列有标题,另一列有删除按钮。为了构建此表,我查询了一个名为 inventory 的表:
$query = "SELECT * FROM `inventory`";
$results = mysql_query($query);
$table = 'inventory';
$returnString = '
<table>
<tr>
<th>Title</th>
<th>Command</th>
</tr>
';
while($data = mysql_fetch_assoc($results)){
$returnString .='
<tr>
<td>' . $data['title'] . '</td>
<td><input type="button" value="delete" onclick="remove_record(' . $data['index']. ',\'' . $data['table'] . '\')" />
</tr>';
}
$returnString .='</table>';
return $returnString;
所以,没关系。它工作正常,除了我很高兴不通过我的 javascript 函数发送两 block 数据(索引和表名),通过我的表单处理程序返回通过我的查询返回我从原始查询生成的数据。
如果有某种对记录的全局引用,那就太好了,这样我就可以创建一个函数,从我的数据库中的任何地方删除一条记录。
最佳答案
据我所知,MySQL 不会为数据库中创建的每条记录创建明确的唯一 ID(例如全局 guid)。我也不认为它存在意义,因为这项工作已经通过在每个表中创建主键来完成。
表名和该表的主键的组合是记录的唯一值,因为数据库中没有其他记录可以保存该表的主键。
我无法理解这个问题背后的原因。如果您需要在单独的表中存储对特定记录的引用,那么您应该在另一个表上添加外键约束以引用第一个表的主键。
关于php - Mysql有唯一记录键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5615739/