復原、重做
可以回到先前的編輯狀態,也可以前進到之後的編輯狀態。
歷程記錄最多保留 2048 筆變更。
- 復原:
Ctrl + Z(Windows/Linux) 或⌘ + Z(Mac) - 重做:
Ctrl + Shift + Z(Windows/Linux) 或⌘ + Shift + Z(Mac)
在 ERD 索引標籤中,工具列在 Time Travel 旁邊以 Undo 和 Redo 按鈕提供相同的兩個命令。在「字典」索引標籤中,工具列會顯示 Undo 和 Redo,但不顯示 Time Travel,其他索引標籤則都不會顯示這些按鈕。
只有在有內容可以復原或重做時,這兩個按鈕才會亮起。readonly 編輯器會隱藏這些按鈕和 Time Travel,快速鍵也不會復原或重做任何內容。
復原和重做只在 ERD 索引標籤中作用於圖表的歷程記錄。
在該索引標籤中,快速搜尋、Table Properties、Diff Viewer、Auto Layout 預覽、Export image 對話方塊、「對應欄位」或時光旅行開啟期間,快速鍵會停用。
鍵盤焦點位於物件總管中的任何位置(包括其樹狀結構)時,以及顏色選擇器開啟時,快速鍵仍可使用。即使插入點位於它們的某個輸入框中,例如「尋找」、「取代」或 Hex 輸入框,快速鍵也會復原和重做圖表,而不是輸入框中的文字。
在其他索引標籤中:
- 字典:它們會從所顯示工作表(
Domains、Words或Terms)自身的歷程記錄中,復原和重做該工作表的編輯,永遠不會作用於圖表的歷程記錄。在Checks上則不會有任何作用,請參閱字典工作表。 - 視覺化:在
Flow中,相同的按鍵會在流程模式曾顯示的內容之間返回上一步和前進到下一步,與Previous table和Next table相同,在readonly編輯器中也是如此。它們在該處永遠不會復原或重做圖表,請參閱上一個資料表與下一個資料表。在Graph中則不會有任何作用。 - 結構描述 SQL、程式碼產生器和設定:無法使用。在「結構描述 SQL」索引標籤的
Before tables和After tables輸入框中,相同的按鍵會改為復原和重做在該輸入框中輸入的內容。
歷程記錄存放在目前工作階段的記憶體中。它不會儲存在文件中,因此重新開啟的圖表會從空的歷程記錄開始。

歷程記錄涵蓋的內容
會記錄的內容:
- 資料表和備忘錄:新增、移除、移動和顏色;資料表的名稱、邏輯名稱和註解;備忘錄的文字和大小。
- 資料表群組:新增、移除、移動、調整大小、名稱、顏色,以及每個資料表所屬的群組,請參閱資料表群組。
- 欄位:新增、移除、重新排序、邏輯名稱、各欄位所連結的定義域,以及每個欄位選項。
- 字典所產生的物理名稱,以及每個名稱是自行撰寫的還是由字典產生的:一次復原會將名稱與該狀態一起恢復,請參閱自行撰寫的名稱。
Derive Physical Name Again和Derive Physical Names Again,請參閱重新產生物理名稱。- 關聯:新增、移除、類型變更、在「對應欄位」中設定的欄位,以及在
On Delete或On Update中所做的每個選擇,請參閱 ON DELETE 與 ON UPDATE。復原移除操作時,關聯會連同其 ON DELETE 和 ON UPDATE 動作一起恢復。 - 索引及其欄位。
- 檢視位置、縮放比例,以及
View Option的切換按鈕。 - 「結構描述 SQL」索引標籤的
Before tables和After tables指令碼,每次藉由離開輸入框而套用的編輯各算作一個步驟,請參閱前置與後置指令碼。 - 匯入檔案,以及使用
Import and Add加入檔案。
不會記錄的內容:
- 資料庫廠商和資料庫名稱。
- 程式碼產生器的語言、
Table Name Case和Column Name Case。 - 引號類型,無論是在「結構描述 SQL」索引標籤還是「程式碼產生器」索引標籤中設定。
- 「結構描述 SQL」索引標籤中
Statements、Header、Write logical names into empty comments和Tables的選擇,這些選擇屬於編輯器視窗,請參閱選項面板。 - 「設定」索引標籤中的所有項目,包括
Lock的各列。 - 切換「名稱顯示」,無論是從哪個位置切換,也無論其鎖定是否開啟,請參閱切換顯示方式。
- 佈景主題和顯示語言,請參閱語言與佈景主題。
- 哪個資料表、備忘錄或群組繪製在其他項目的前面。
- 物件總管:開啟、關閉物件總管或調整其大小、摺疊其樹狀結構,以及搜尋文字與搜尋選項。不過,
Replace和Replace All所做的變更會被記錄,前往操作造成的捲動也會被記錄,請參閱一次操作,一個步驟。 - 「視覺化」索引標籤中兩種模式下的縮放和平移、移動關係圖的節點或流程模式的卡片、
Tidy Up、列顯示、聚焦資料表,以及使用Previous table和Next table逐步移動,請參閱流程模式從不編輯文件。 - 「字典」索引標籤目前顯示哪個工作表,以及每個工作表的搜尋、選取範圍、捲動位置和欄寬,請參閱開啟索引標籤。
這些項目的任何變更都無法復原。
唯讀編輯器完全不會記錄任何東西。檢視位置、縮放比例和 View Option 切換按鈕,以及索引標籤、「名稱顯示」、資料庫和程式碼設定,在那裡仍可變更,但只作用於該畫面,因此沒有任何東西可復原,請參閱設定中的唯讀編輯器。
在「字典」索引標籤中所做的編輯可以復原,但它們會進入各自工作表的歷程記錄,而不是這份歷程記錄,因此 ERD 索引標籤中的復原永遠不會撤回這些編輯,即使是定義域新的 Data Type 及其所變更的欄位類型也不例外,請參閱字典工作表。
來自其他編輯器的變更也不會被記錄,因此復原只會還原您自己的變更。在協作工作階段中,每個編輯器會復原各自的變更,而透過 MCP 伺服器進行編輯的程式碼代理程式則會使用 erd_undo 復原自己的變更。
復原取代整個圖表的 Import 時,會依匯入當時編輯器所持有的樣子恢復先前的圖表,每個鎖定的開啟或關閉狀態,以及每個鎖定的值,也都會恢復為當時的狀態。
若該圖表鎖定了 Viewport,檢視和縮放比例會回到鎖定的檢視,也就是圖表開啟時的位置,而不是您原本所在的位置。若該圖表的 Viewport 未鎖定,檢視和縮放比例則會回到您匯入時所在的位置。其他鎖定的設定,例如您目前所在的索引標籤、程式碼產生器的語言或「名稱顯示」,則會維持您畫面上的樣子。
新的圖表一開始所有鎖定都是開啟的。在匯入前解除鎖定 Viewport,即可在這類復原後保留您的檢視。匯入後才解除鎖定,或匯入自身 Viewport 鎖定為關閉狀態的 JSON 檔案,都不會改變復原後所回到的位置。
復原或重做 Import 也會結束正在繪製的關聯,請參閱建立關聯。
復原 JSON 檔案的匯入時,也會恢復先前圖表所擁有的詞彙、術語和定義域。結構描述 SQL、GraphQL、DBML 或 AML 的匯入會保留字典,因此其復原和重做會讓字典維持現狀,包括此後在「字典」索引標籤中所做的編輯。
在 ERD 索引標籤中,將欄位重新連結到定義域,或恢復已連結到定義域之欄位的復原或重做,會賦予該欄位該定義域目前的資料類型。將其他類型恢復到已連結欄位上的復原或重做,則會解除該欄位的連結,請參閱定義域與資料類型。
一次操作,一個步驟
單一操作所分派的所有內容都會成為一筆歷程記錄。
一次貼上多個資料表和備忘錄,或使用 Alt + drag 建立其副本,都會以一個步驟復原。
按一次 Delete 或 Backspace,或是右鍵選單中的 Delete selected 或 Delete columns,無論移除了多少個資料表、備忘錄、資料表群組或欄位,都算作一個步驟。
在多個已選取的欄位上切換主鍵算作一個步驟,無論是使用 Alt + K (Windows/Linux) 或 ⌥ + K (Mac),還是使用資料表右鍵選單中的 Primary Key on selected columns。
設定選取範圍的顏色,或使用 No color 或 Remove color 清除顏色,無論選取了多少個資料表、備忘錄和群組,都算作一個步驟。選擇所有已選取項目都已具有的顏色不會記錄任何步驟,在已選取項目都沒有顏色時使用 No color 也是如此。
「對應欄位」中的 Map 或 Save 連同其加入的外鍵欄位和變更的資料類型,算作一個步驟。
Import and Add 算作一個步驟,需要捲動才能讓加入的區塊進入可見範圍時,該捲動也包含在同一個步驟中。
從邏輯名稱儲存格下方的清單中選擇術語算作一個步驟:其中包括邏輯名稱、它所產生的物理名稱,若為欄位,還包括該術語的定義域及其資料類型,請參閱術語名稱自動完成。
在欄位的定義域儲存格中選擇定義域算作一個步驟,它賦予該欄位的資料類型,以及關聯資料類型同步沿著關聯所傳遞的內容,也包含在內。選擇 None(會解除該欄位的連結)也算作一個步驟,請參閱定義域儲存格。在已連結的欄位中輸入與其定義域不同的資料類型時,會在該次輸入的步驟中解除該欄位的連結。
Derive Physical Name Again 或 Derive Physical Names Again 算作一個步驟,無論它變更了多少個名稱、定義域連結和資料類型。只有在沒有變更任何內容時,它才不會記錄任何步驟。將自行撰寫的名稱交還給字典也算是一項變更,即使該名稱已經是字典所提供的值也是如此。
建立資料表群組(無論是繪製群組,還是使用 Group selected tables 或先按 T 再按 G 將所選資料表組成群組)連同其納入的每個資料表,算作一個步驟。移除群組算作一個步驟,復原後群組會連同其中的資料表一起恢復。
拖曳群組的標題列會在一個步驟中移動群組及其所有資料表。若在最後一次移動後約 200ms 內放開,被拖入或拖出群組的資料表會在與其拖曳相同的步驟中變更所屬群組,因此復原一次就會讓它們回到原本的位置和原本所屬的群組。若放開前停頓較久,群組的變更會成為獨立的步驟,第一次復原只會撤回該變更。
以邊緣或角落調整群組大小時,會在放開時記錄一次。
套用自動版面配置算作一個步驟,它讓群組貼合各自資料表的調整也包含在內。
尋找與取代中的 Replace All 也算作一個步驟,無論它變更了多少個資料表名稱、欄位名稱、邏輯名稱、索引名稱、資料表群組名稱、註解和備忘錄,邏輯名稱所產生的物理名稱和定義域連結也包含在內。若沒有變更任何內容,例如 Preserve Case 將每個相符項目原樣寫回時,則不會記錄任何步驟。
單次 Replace 算作一個步驟,邏輯名稱所產生的內容,以及下一個相符項目需要捲動時捲動到該項目的動作,也包含在內。若它將相符項目原樣寫回,則只會記錄該次捲動;沒有捲動時,則不會記錄任何內容。
前往相符項目時,只有在該相符項目尚未清楚顯示時才會捲動畫布,請參閱跳至目標時的落點。該捲動會像任何其他檢視位置變更一樣被記錄,因此在相符項目之間移動後,復原會先撤回這些捲動,每個步驟撤回一個。
其他落在畫布上的前往操作也以相同方式記錄其捲動:選擇物件總管中的列、快速搜尋的結果、「字典」索引標籤的 Checks 工作表上指名資料表或欄位的檢查,或流程模式中的外部連結卡片按鈕。讓檢視維持原位的前往操作不會記錄任何內容。選擇 Diff Viewer 清單中的列也不會記錄任何內容,因為這只會移動差異檢視器本身的唯讀兩側。
連續的拖曳、畫布平移、縮放、雙指縮放或顏色變更會緩衝約 200ms,同樣會成為一筆歷程記錄。
總移動距離小於 20px 的拖曳不會記錄任何移動。只會記錄它所造成的群組變更(如果有的話)。
在儲存格或備忘錄中輸入時,會以每次輸入為單位記錄,而不是以操作為單位:每個輸入的字元、每次貼上,以及輸入法組字的每個步驟,都各自是一個步驟。
邏輯名稱儲存格也以相同方式記錄。其編輯器關閉時,若邏輯名稱與開啟時不同,字典依其產生的物理名稱會在輸入之後再成為一個步驟。第一次復原只會撤回該名稱,以及術語所帶入的定義域和資料類型,並保留您輸入的邏輯名稱。沒有產生任何名稱時,就不會再記錄任何內容,請參閱輸入邏輯名稱。
資料表群組的名稱會在按 Enter 或離開輸入框而儲存時記錄一次,因此在剛建立的群組中輸入的名稱,與建立群組是分開的步驟。按 Esc 或名稱維持不變時,都不會記錄任何內容。
字典工作表
「字典」索引標籤的 Domains、Words 和 Terms 工作表各自保有自己的歷程記錄,與圖表的歷程記錄分開。在此索引標籤中所做的每項編輯,都會進入其所寫入的列所屬工作表的歷程記錄。與圖表的歷程記錄相同,每份歷程記錄最多保留 2048 個步驟,並存放在該工作階段的記憶體中。
- 鍵盤焦點位於此索引標籤中時,
Ctrl + Z(Windows/Linux) 或⌘ + Z(Mac) 會復原所顯示工作表的最後一項編輯,而Ctrl + Shift + Z(Windows/Linux) 或⌘ + Shift + Z(Mac) 會重做最後一項被復原的編輯。 - 工具列的
Undo和Redo也有相同的作用,且只有在所顯示的工作表有可復原或重做的編輯時才會亮起。按下這些按鈕時,鍵盤焦點會維持原位,留在網格或搜尋輸入框中。此索引標籤沒有Time Travel。 - 在不進行任何編輯的
Checks上,這些按鈕會保持未亮起,且按鈕和按鍵都不會有任何作用。 - 儲存格編輯開啟時,或插入點位於此索引標籤的搜尋輸入框中時,這些按鍵會改為復原和重做在該處輸入的內容。
這些歷程記錄永遠不會互相交錯。ERD 索引標籤中的復原永遠不會撤回工作表的編輯,而工作表的復原也永遠不會撤回其他工作表或圖表的編輯。切換工作表或索引標籤時,每個工作表都會保留其歷程記錄。
以下各項各自算作其工作表的一個步驟:
- 一次儲存格編輯,在寫入時記錄一次,而不是以每個輸入的字元為單位記錄,且只有在值有所變更時才會記錄,請參閱編輯儲存格。
- 一次貼上(包括其所新增的列),以及使用
Delete或Backspace清除選取的儲存格,請參閱複製與貼上。 Add Row,以及每次從功能列、網格選單或按鍵所做的列插入或刪除,無論涵蓋多少列,請參閱新增與刪除列。- 從清單中為術語選擇的定義域,包括
None,請參閱術語的定義域。 - 一次排序,請參閱排序。
- 使用
Import CSV匯入的一個 CSV 檔案,無論它新增或更新了多少列。它是該檔案所填入之工作表的步驟,此索引標籤隨後也會顯示該工作表,無論您是從哪個工作表匯入的,請參閱匯入。
沒有變更任何內容的寫入(例如再次匯入同一個檔案,或對已經是該順序的工作表進行排序)不會記錄任何步驟,被 Nothing saved: … 快顯通知拒絕的寫入也是如此。沒有 Physical Name 的術語被賦予名稱時,其詞彙組成的物理名稱也包含在該次編輯的步驟中。
定義域新的 Data Type 算作 Domains 工作表的一個步驟,它賦予連結到該定義域之欄位的類型,以及「關聯資料類型同步」從這些欄位傳遞到的類型,也包含在內,請參閱定義域與資料類型。
復原或重做此步驟時,會重新設定當下連結到該定義域之欄位的類型,因此此後您已連結到其他定義域或重新設定類型的欄位會保留其類型。被此步驟解除連結的欄位(例如同步使其脫離自身定義域的外鍵),只有在仍處於未連結狀態,且仍保有此步驟留給它的類型時,才會重新連結。
readonly 編輯器會隱藏這些按鈕,按鍵也不會復原或重做任何內容。
來自協作者和程式碼代理程式的變更也不會記錄在工作表的歷程記錄中。
字典被取代時,每個工作表的歷程記錄都會被清空,取代的方式包括:您或協作者以 Import 匯入 JSON 檔案、該次匯入的復原或重做,以及將另一個圖表載入編輯器。結構描述 SQL、GraphQL、DBML 或 AML 的 Import 會保留字典,也連帶保留每個工作表的歷程記錄,其復原和重做也是如此。
時光旅行
在 ERD 索引標籤中,從工具列中位於復原和重做旁邊的 Time Travel 按鈕開啟。
在圖表的歷程記錄至少有一筆已記錄的變更之前,此按鈕不會有任何作用。唯讀編輯器不會顯示這個按鈕,而轉為唯讀的編輯器會關閉 Time Travel 且不套用它。
無論 Viewport 或 Name View 鎖定是否開啟,時光旅行都會以畫布目前顯示的捲動位置、縮放比例和名稱顯示,開啟圖表的一份獨立唯讀副本。
它只會逐步瀏覽圖表的歷程記錄,因此字典工作表的編輯不在其時間點之中。
拖曳滑桿,或按一下其滑軌上的任意位置,即可在整個編輯歷程記錄中移動並預覽每個時間點。滑桿最左端的位置是第一筆已記錄變更之前一個步驟的狀態,開啟時滑塊會位於目前的狀態。
預覽無法互動:它會繪製小地圖,但無法平移、捲動或編輯預覽,而且在套用之前,實際的文件都會維持原樣。
按 Apply 即可恢復所選的時間點,或按 Cancel 或 Esc 讓文件維持不變。
