可應用作業系統:Windows、Mac、Linux

可應用 Navicat 產品:全部

可應用 Navicat 版本編號:Windows 版本 10.x 或以下、Mac 版本 8.x 或以上、Linux 版本 10.x 或以下

 

首先,如果警告煩擾了你,可以關閉它!

Windows 和 Linux:選擇工具 > 選項,並在外觀 > 資料 & 網格取消勾選顯示主索引鍵警告

Mac:選擇 Navicat xxx > 偏好設定,並在網格索引標籤取消勾選顯示主索引鍵警告

Navicat 警告你,因為當更新沒有主索引鍵的資料表,你可能會得到意外的結果。請看下面的例子。

以下面的資料表為例:

Name

Surname

Age

Pete

McKensey

24

John

Slaid

34

Pete

McKensey

44

Mary

Joplen

26

這資料表沒有主索引鍵。如果你更新 Pete 的年齡做 44,下面的語句將發送到伺服器:

UPDATE "table" SET age=44 WHERE name='Pete' and surname='McKensey' and age=24;

這將正確執行,變更了第一個記錄的年齡值。現在將資料表中有兩個 Pete McKensey 年齡 44 的記錄。如果你現在嘗試更新第三個記錄的年齡為 55,下面的語句將發送到伺服器:

UPDATE "table" SET age=55 WHERE name='Pete' and surname='McKensey' and age=44;

本語句將變更第一個和第三個記錄的年齡值為 55。

你應該注意到,本表中的資料現在已經成為不一致,第一個和第三個記錄有完全相同的值,沒有辦法區分這兩個記錄。這是因為資料表不是第一範式(基於關係資料庫的任何書籍將解釋這一點),這意味著在資料表中沒有一個欄位或一組欄位用來唯一地識別記錄。

這就是為什麼以前版本的 Navicat,需要一個主索引鍵來更新資料表。如果這個資料表有一個 ID 欄位是主索引鍵,語句將如下:

UPDATE "table" SET age=44 WHERE ID=1; UPDATE "table" SET age=55 WHERE ID=3;

這些語句是不會造成任何不一致的資料。

我們收到許多查詢關於這一點,所以決定任何資料表必須可更新,如果資料表沒有主索引鍵,只是顯示一個警告。

還有其他問題嗎?
提交查詢