Theo Dõi Thay Đổi
TablePro sử dụng hệ thống theo dõi thay đổi dựa trên hàng đợi cho phép bạn thực hiện nhiều chỉnh sửa trước khi commit chúng vào cơ sở dữ liệu. Tất cả các thay đổi được lưu trữ cục bộ, cho bạn cơ hội xem xét, hoàn tác hoặc hủy bỏ trước khi bất cứ điều gì ảnh hưởng đến dữ liệu của bạn.
Tổng Quan
Khi bạn chỉnh sửa dữ liệu hoặc sửa đổi cấu trúc bảng trong TablePro, các thay đổi không được áp dụng ngay lập tức. Thay vào đó, chúng được đưa vào hàng đợi trong bộ nhớ và được đánh dấu trực quan trong data grid. Sau đó, bạn có thể commit tất cả các thay đổi cùng một lúc hoặc hủy bỏ chúng hoàn toàn.
Cách tiếp cận này ngăn chặn mất dữ liệu do tai nạn và cho bạn toàn quyền kiểm soát khi nào các sửa đổi đến cơ sở dữ liệu.
Theo dõi thay đổi hoạt động theo từng tab. Mỗi tab duy trì tập hợp các thay đổi đang chờ độc lập của riêng nó, do đó việc chuyển đổi giữa các tab sẽ bảo toàn các chỉnh sửa của bạn.
Thay Đổi Dữ Liệu
TablePro theo dõi ba loại thay đổi dữ liệu: chỉnh sửa ô (cập nhật), chèn hàng và xóa hàng. Tất cả các tra cứu đều là O(1) sử dụng cấu trúc dữ liệu dựa trên hash được tối ưu hóa, do đó hiệu suất vẫn nhanh ngay cả với nhiều thay đổi đang chờ.
Chỉnh Sửa Ô
Để chỉnh sửa một ô hiện có:
- Double-click vào ô bạn muốn sửa đổi
- Nhập giá trị mới
- Nhấn
Enter để xác nhận hoặc Escape để hủy
Các ô đã sửa đổi được đánh dấu trực quan trong data grid để bạn có thể thấy chính xác những gì đã thay đổi.
Nếu bạn thay đổi giá trị trở lại giá trị ban đầu, thay đổi sẽ tự động bị xóa khỏi hàng đợi. TablePro phát hiện khi các chỉnh sửa hủy bỏ lẫn nhau.
Thêm Hàng
Để chèn một hàng mới:
- Click vào nút + trên toolbar hoặc sử dụng phím tắt
- Một hàng mới xuất hiện ở cuối data grid, được đánh dấu bằng chỉ báo chèn
- Điền các giá trị cho mỗi cột
- Các cột có giá trị mặc định được điền trước với
DEFAULT
Các hàng mới được theo dõi riêng biệt với các cập nhật. Bạn có thể chỉnh sửa các ô trong hàng mới được chèn, và các chỉnh sửa đó được gộp vào phép chèn thay vì tạo các bản ghi cập nhật riêng biệt.
Xóa Hàng
Để xóa các hàng:
- Chọn một hoặc nhiều hàng trong data grid
- Nhấn phím
Delete hoặc click vào nút xóa
- Các hàng đã xóa được đánh dấu bằng chỉ báo xóa (kiểu gạch ngang)
Các hàng đã xóa vẫn hiển thị trong grid cho đến khi bạn commit hoặc hủy bỏ, vì vậy bạn có thể hoàn tác việc xóa nếu cần.
Việc xóa hàng loạt nhiều hàng được theo dõi như một hành động hoàn tác duy nhất. Hoàn tác một lần xóa hàng loạt sẽ khôi phục tất cả các hàng cùng một lúc.
Commit & Hủy Bỏ
Sau khi bạn đã lưu trữ các thay đổi của mình, bạn có thể commit chúng vào cơ sở dữ liệu hoặc hủy bỏ chúng.
Commit Thay Đổi
Để áp dụng tất cả các thay đổi đang chờ:
- Click vào nút Commit trên toolbar, hoặc nhấn
Cmd+S
- TablePro tạo các câu lệnh SQL có tham số cho tất cả các thay đổi trong hàng đợi
- Các câu lệnh được thực thi trên cơ sở dữ liệu
- Khi thành công, hàng đợi thay đổi được xóa và grid được làm mới
Thao tác commit tạo ra:
| Loại Thay Đổi | SQL Được Tạo |
|---|
| Chỉnh sửa ô | UPDATE ... SET column = ? WHERE pk = ? |
| Chèn hàng | INSERT INTO ... (columns) VALUES (?) |
| Xóa hàng | DELETE FROM ... WHERE pk = ? |
Các câu lệnh UPDATE yêu cầu khóa chính trên bảng. Nếu không có khóa chính được định nghĩa, TablePro sẽ hiển thị lỗi khi bạn cố gắng commit các cập nhật. Các câu lệnh DELETE có thể hoạt động mà không có khóa chính bằng cách khớp tất cả các giá trị cột.
Hủy Bỏ Thay Đổi
Để hoàn nguyên tất cả các thay đổi đang chờ:
- Click vào nút Discard trên toolbar
- Tất cả các thay đổi trong hàng đợi bị xóa
- Các ô đã sửa đổi quay về giá trị ban đầu của chúng
- Các hàng đã chèn bị xóa khỏi grid
- Các hàng đã xóa được bỏ đánh dấu
Hủy bỏ cũng xóa ngăn xếp hoàn tác/làm lại cho tab hiện tại.
Hoàn Tác & Làm Lại
TablePro cung cấp ngăn xếp hoàn tác/làm lại đầy đủ cho các chỉnh sửa dữ liệu, cho phép bạn bước lùi và tiến qua các thay đổi của mình trước khi commit.
Cách Hoạt Động
Mọi thay đổi dữ liệu được đẩy vào ngăn xếp hoàn tác:
- Chỉnh sửa ô: Lưu trữ giá trị trước đó và giá trị mới
- Chèn hàng: Lưu trữ chỉ số hàng
- Xóa hàng: Lưu trữ chỉ số hàng và dữ liệu hàng ban đầu
- Xóa hàng loạt: Lưu trữ tất cả các hàng bị ảnh hưởng như một hành động duy nhất
Khi bạn hoàn tác, hành động được chuyển sang ngăn xếp làm lại. Khi bạn làm lại, nó quay trở lại ngăn xếp hoàn tác.
Sử Dụng Hoàn Tác & Làm Lại
| Hành Động | Phím Tắt |
|---|
| Hoàn tác | Cmd+Z |
| Làm lại | Cmd+Shift+Z |
Hoàn tác và làm lại có nhận biết ngữ cảnh. Khi trình soạn thảo SQL được focus, Cmd+Z hoàn tác các chỉnh sửa văn bản. Khi data grid được focus, nó hoàn tác các thay đổi dữ liệu.
Hành Vi Ngăn Xếp
- Các ngăn xếp hoàn tác/làm lại được duy trì theo từng tab
- Commit hoặc hủy bỏ các thay đổi sẽ xóa cả hai ngăn xếp
- Các thay đổi mới sau khi hoàn tác sẽ xóa ngăn xếp làm lại (hành vi hoàn tác tiêu chuẩn)
Thay Đổi Schema
TablePro cũng theo dõi các thay đổi đối với cấu trúc bảng (cột, index và foreign key) sử dụng cách tiếp cận dựa trên hàng đợi tương tự.
Các Thao Tác Schema Được Theo Dõi
| Thao Tác | Những Gì Được Theo Dõi |
|---|
| Thêm cột | Định nghĩa cột mới (tên, kiểu, nullable, default, v.v.) |
| Sửa đổi cột | Định nghĩa cột cũ và mới |
| Xóa cột | Cột được đánh dấu để xóa |
| Thêm index | Định nghĩa index mới (tên, cột, kiểu, tính duy nhất) |
| Sửa đổi index | Định nghĩa index cũ và mới |
| Xóa index | Index được đánh dấu để xóa |
| Thêm foreign key | Định nghĩa FK mới (cột, tham chiếu, hành động) |
| Sửa đổi foreign key | Định nghĩa FK cũ và mới |
| Xóa foreign key | FK được đánh dấu để xóa |
| Sửa đổi primary key | Các cột primary key cũ và mới |
Chỉ Báo Trực Quan
Trong tab Structure, các thay đổi đang chờ được hiển thị với các chỉ báo trực quan:
- Các mục mới (cột, index, foreign key) được đánh dấu bằng màu chèn
- Các mục đã sửa đổi hiển thị các trường đã thay đổi
- Các mục đã xóa được đánh dấu bằng chỉ báo xóa
Hoàn Tác & Làm Lại Schema
Các thay đổi schema có ngăn xếp hoàn tác/làm lại riêng (tách biệt với các thay đổi dữ liệu):
- Lên đến 100 mức hoàn tác
- Các hành động mới xóa ngăn xếp làm lại
- Hỗ trợ tất cả các loại thao tác schema
Xem Trước SQL Schema
Trước khi áp dụng các thay đổi schema, bạn có thể xem trước SQL được tạo:
Thực Hiện Thay Đổi
Thêm, sửa đổi hoặc xóa cột, index hoặc foreign key trong tab Structure
Click Commit
Click vào nút Commit hoặc nhấn Cmd+S
Xem Xét SQL
Một sheet xem trước hiển thị tất cả các câu lệnh ALTER TABLE sẽ được thực thi
Áp Dụng hoặc Hủy
Click Apply Changes để thực thi, hoặc Cancel để quay lại và điều chỉnh
Bạn có thể sao chép các câu lệnh SQL riêng lẻ từ sheet xem trước bằng cách sử dụng nút sao chép bên cạnh mỗi câu lệnh.
Tạo SQL
TablePro tạo SQL cụ thể cho từng cơ sở dữ liệu cho cả thay đổi dữ liệu và schema.
SQL Dữ Liệu (SQLStatementGenerator)
Các thay đổi dữ liệu tạo ra các câu lệnh có tham số để ngăn chặn SQL injection:
MySQL/MariaDB
PostgreSQL
SQLite
-- UPDATE với LIMIT 1 để an toàn
UPDATE `users` SET `name` = ? WHERE `id` = ? LIMIT 1
-- INSERT
INSERT INTO `users` (`name`, `email`) VALUES (?, ?)
-- DELETE (với PK)
DELETE FROM `users` WHERE `id` = ? OR `id` = ?
-- DELETE (không có PK, khớp tất cả các cột)
DELETE FROM `users` WHERE `name` = ? AND `email` = ? LIMIT 1
-- UPDATE với tham số vị trí
UPDATE "users" SET "name" = $1 WHERE "id" = $2
-- INSERT
INSERT INTO "users" ("name", "email") VALUES ($1, $2)
-- DELETE (với PK)
DELETE FROM "users" WHERE "id" = $1 OR "id" = $2
-- UPDATE
UPDATE "users" SET "name" = ? WHERE "id" = ?
-- INSERT
INSERT INTO "users" ("name", "email") VALUES (?, ?)
-- DELETE
DELETE FROM "users" WHERE "id" = ? OR "id" = ?
SQL Schema (SchemaStatementGenerator)
Các thay đổi schema tạo ra các câu lệnh ALTER TABLE với cú pháp cụ thể cho từng cơ sở dữ liệu:
MySQL/MariaDB
PostgreSQL
SQLite
-- Thêm cột
ALTER TABLE `users` ADD COLUMN `phone` VARCHAR(20) NOT NULL
-- Sửa đổi cột
ALTER TABLE `users` MODIFY COLUMN `name` VARCHAR(200) NOT NULL
-- Xóa cột
ALTER TABLE `users` DROP COLUMN `phone`
-- Thêm index
CREATE INDEX `idx_email` ON `users` (`email`) USING BTREE
-- Xóa foreign key
ALTER TABLE `orders` DROP FOREIGN KEY `fk_orders_user`
-- Thêm cột
ALTER TABLE "users" ADD COLUMN "phone" VARCHAR(20) NOT NULL
-- Sửa đổi cột (nhiều câu lệnh)
ALTER TABLE "users" RENAME COLUMN "name" TO "full_name";
ALTER TABLE "users" ALTER COLUMN "full_name" TYPE VARCHAR(200);
ALTER TABLE "users" ALTER COLUMN "full_name" SET NOT NULL
-- Xóa cột
ALTER TABLE "users" DROP COLUMN "phone"
-- Thêm index
CREATE INDEX "idx_email" ON "users" ("email")
-- Xóa constraint
ALTER TABLE "orders" DROP CONSTRAINT "fk_orders_user"
-- Thêm cột
ALTER TABLE "users" ADD COLUMN "phone" TEXT
-- Xóa cột
ALTER TABLE "users" DROP COLUMN "phone"
-- Thêm index
CREATE INDEX "idx_email" ON "users" ("email")
SQLite có hỗ trợ ALTER TABLE hạn chế. Việc sửa đổi cột và xóa foreign key yêu cầu tái tạo bảng, hiện không được hỗ trợ trong trình chỉnh sửa trực quan. Sử dụng trình soạn thảo SQL cho các thao tác này.
Hỗ Trợ Hàm SQL
Khi chỉnh sửa các ô, TablePro nhận ra các hàm SQL phổ biến và chèn chúng dưới dạng literal thay vì chuỗi được trích dẫn:
| Hàm | Cơ Sở Dữ Liệu |
|---|
NOW() | MySQL, MariaDB |
CURRENT_TIMESTAMP | Tất cả |
CURDATE() | MySQL, MariaDB |
CURRENT_DATE | Tất cả |
SYSDATE() | MySQL |
UTC_TIMESTAMP() | MySQL, MariaDB |
Sắp Xếp Theo Phụ Thuộc
Các thay đổi schema được tự động sắp xếp theo thứ tự phụ thuộc trước khi thực thi:
- Xóa foreign key (phải đến trước để tránh vi phạm ràng buộc)
- Xóa index
- Xóa/sửa đổi cột
- Thêm cột
- Sửa đổi primary key
- Thêm index
- Thêm foreign key
Phím Tắt
| Hành Động | Phím Tắt |
|---|
| Commit thay đổi | Cmd+S |
| Hoàn tác | Cmd+Z |
| Làm lại | Cmd+Shift+Z |
| Xóa các hàng đã chọn | Delete hoặc Cmd+Delete |
| Chỉnh sửa ô | Enter hoặc double-click |
| Hủy chỉnh sửa | Escape |
Thực Hành Tốt Nhất
Xem Xét Trước Khi Commit
Luôn xem xét các thay đổi đang chờ của bạn trước khi commit. Các chỉ báo trực quan trong data grid giúp dễ dàng phát hiện các chỉnh sửa không mong muốn.
Sử Dụng Hoàn Tác Thường Xuyên
Ngăn xếp hoàn tác được xóa khi bạn commit, vì vậy hãy tận dụng nó trong khi chỉnh sửa. Nó không tốn chi phí gì để hoàn tác và làm lại trong khi bạn đang làm việc.
Commit Thường Xuyên
Tránh tích lũy quá nhiều thay đổi trước khi commit. Các commit nhỏ hơn, thường xuyên hơn dễ xác minh hơn và ít rủi ro hơn nếu có sự cố xảy ra.
Xem Trước Thay Đổi Schema
Luôn sử dụng xem trước SQL khi sửa đổi cấu trúc bảng. Điều này cho phép bạn xác minh các câu lệnh ALTER TABLE chính xác trước khi chúng thực thi.
Sao Lưu Trước Các Thay Đổi Phá Hủy
Khi xóa cột hoặc thực hiện các thay đổi schema phá hủy khác, hãy xem xét sao lưu bảng của bạn trước:
CREATE TABLE users_backup AS SELECT * FROM users;
Các Bước Tiếp Theo