0
看看下面的數據集:MySQL - 有沒有辦法保持我的數據集的參照完整性?
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
現在我們明顯可以看到的顏色和用戶由用戶標識鏈接。我們正確的用戶刪除腳本將從顏色表中刪除所有匹配的用戶標識,然後刪除用戶表中的用戶。比方說,我們有一個懶惰的管理員,他們手動將SSH登錄到服務器並從用戶表中刪除用戶。假設「約翰」已被刪除。
然後我們有一個問題,當我們的顏色檢索腳本運行(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 />"
}
?>
有沒有在MySQL本身就是一個概念,也不會允許管理員刪除用戶表,如果該條目該用戶標識位於顏色表中。請原諒我的無知,我不是DBA。
另一方面,如果你想向DBA提出問題,那麼就有[Stack Exchange](http://dba.stackexchange.com)。 – xathien 2015-03-30 20:37:36