【发布时间】:2026-01-09 19:45:02
【问题描述】:
取以下数据集:
Users
(int) (varchar) (varchar) (varchar)
id | username | password | stuff |
1 john cat stuff
2 jack dog stuff
3 bill bird stuff
.
.
.
n userN lol stuff
和
Colors
(int) (varchar)
userid | color
1 green
2 green
3 yellow
. .
. .
. .
n purple
现在我们显然可以看到颜色和用户是通过用户 ID 链接的。我们正确的用户删除脚本会从颜色表中删除所有匹配的用户 ID,然后删除用户表中的用户。假设我们有一个懒惰的管理员,他手动 SSH 到服务器并从用户表中删除一个用户。假设“john”被删除了。
然后当我们的颜色检索脚本运行时出现问题(为简单起见,PHP):
<?
$query = "SELECT * FROM colors WHERE color = 'green'";
$result = mysql_query($query);
while ($row = mysql_fetch_asoc($result)) {
//The code bricks here.
$query2 = "SELECT * FROM users WHERE id = " . $row['id']. " LIMIT 1";
$result2 = mysql_query($query2);
$row2 = mysql_fetch_asoc($result2);
echo $row2['username'] . "<br />"
}
?>
如果用户 ID 在颜色表中,MySQL 本身是否存在不允许管理员删除用户表中的条目的概念。原谅我的无知,我不是DBA。
【问题讨论】:
-
附带说明,如果您想向 DBA 提出问题,可以使用 a Stack Exchange。
标签: php mysql database-administration referential-integrity