Hướng dẫn AgentFlow

Trường dữ liệu

Danh mục đầy đủ 12 kiểu trường của Thực thể — dữ liệu mỗi kiểu lưu, cờ Bắt buộc/Nhạy cảm, ràng buộc giá trị, định dạng hiển thị, và vòng đời khóa định danh.

Mỗi trường trên một Thực thể có một Kiểu cố định. Khóa (key) và Kiểu của một trường bị khóa ngay khi trường được lưu lần đầu — chỉ Nhãn, Mô tả và mức Nhạy cảm còn đổi được sau đó.

Danh mục kiểu trường

KiểuLưu trữ gìCài đặt chính
text (Văn bản)Chuỗi ký tự tự do — tên, mã số, ghi chúĐịnh dạng hiển thị: email · URL · điện thoại · văn bản đa dạng thức (richtext)
number (Số)Giá trị sốĐịnh dạng: tiền tệ · phần trăm · thời lượng · đánh giá (rating); số chữ số thập phân, dấu phân tách
boolean (Đúng/sai)Cờ có/khôngKhông có cài đặt bổ sung
date (Ngày)Ngày trên lịchĐịnh dạng hiển thị: dd/mm/yyyy · mm/dd/yyyy · ISO · dài · tháng + năm · tương đối
datetime (Ngày giờ)Ngày và giờCùng các định dạng của date, cộng thêm Kiểu giờ (12 giờ / 24 giờ)
enum (Danh sách — chọn một)Một giá trị trong tập lựa chọn cố địnhDanh sách lựa chọn: mỗi lựa chọn có giá trị lưu trữ, nhãn hiển thị tùy chọn và màu
multi_select (Chọn nhiều)Nhiều giá trị từ cùng một tập lựa chọnCùng cơ chế lựa chọn như enum, nhưng bản ghi lưu một mảng giá trị
reference (Tham chiếu)Trỏ tới một bản ghi ở thực thể khácThực thể đích (cố định sau khi tạo); tên liên kết ngược tùy chọn; nếu đích là Người dùng — giới hạn theo nhóm
reference_list (Danh sách tham chiếu)Trỏ tới nhiều bản ghi ở thực thể khácGiống reference
file (Tệp)Một hoặc nhiều tệp đính kèm (lưu dưới dạng id tệp)Số tệp tối đa (mặc định 10); định dạng hiển thị "hình ảnh"
formula (Công thức)Tính từ các trường khác của cùng bản ghi, hoặc từ một trường của bản ghi mà nó tham chiếu; lưu khi ghi, chỉ đọcBiểu thức; Kiểu kết quả — quyết định định dạng hiển thị và toán tử lọc kế thừa
auto_number (Số tự động)Số chạy theo phạm vi, cấp khi tạo bản ghi; chỉ đọc và cố định ngay khi có giá trịLưu dạng: Số hoặc Mã có định dạng (cố định khi tạo); Khóa phạm vi; Mẫu mã số (chỉ ở chế độ mã) — các mẫu vẫn sửa được, và chỉ áp dụng cho các mã cấp về sau

formula và auto_number là hai kiểu duy nhất mà hệ thống tự ghi giá trị — không thể sửa trực tiếp trên bản ghi. Không có kiểu trường "tính toán" (computed) nào khác ngoài formula; đây chính là kiểu đó.

Trường số tự động lưu gì

Trường số tự động hỏi một câu trước tất cả: Lưu dạng — Số hay Mã có định dạng. Lựa chọn này cố định khi tạo trường, vì hai chế độ đặt hai loại giá trị khác nhau vào cùng một cột.

  • Số — chính con số đang chạy: 1, 2, 3. Cột hoạt động như một con số thật: sắp xếp 2 trước 10 (chứ không phải 1, 10, 11, 2), dùng được các bộ lọc lớn hơn / nhỏ hơn, và xuất ra bảng tính thành ô số có thể tính tổng. Đây là thứ bạn cần cho một cột Số thứ tự thông thường. Ở chế độ này không có Mẫu mã số.
  • Mã có định dạng — kết quả của Mẫu mã số, lưu dưới dạng văn bản: HS-0007, 001/2026/GTH. Dùng khi giá trị có tiền tố hoặc số 0 ở đầu, vì đó đúng là những thứ một con số sẽ bỏ mất.

Muốn đổi chế độ về sau, hãy xóa trường rồi thêm lại. Không thể đổi tại chỗ: các bản ghi đã ghi đang giữ loại giá trị cũ, và việc đổi giữa chừng sẽ để lại một cột nửa số nửa văn bản, làm hỏng sắp xếp và lọc cho tất cả.

Vừa có số, vừa có mã — từ cùng một bộ đếm

Thường bạn cần cả hai — một con số để sắp xếp, và một mã để mọi người trích dẫn. Hãy dùng một trường số tự động ở chế độ Số, cộng thêm một trường công thức kết xuất mã từ nó:

TrườngKiểuCài đặtGiá trị
sttauto_number · SốKhóa phạm vi stt:{{ year() }}7
so_hsformula · Kết quả văn bản"HS-" ~ (stt | pad(4))HS-0007

Cả hai đều được điền ngay khi bản ghi được tạo, và cùng đến từ một lần cấp số — nên chúng không thể lệch nhau. Đừng làm việc này bằng hai trường số tự động dùng chung một khóa phạm vi: mỗi trường cấp số riêng, nên chúng sẽ rơi vào hai số khác nhau (7 và 8).

Sửa mẫu của trường số tự động

Cả hai mẫu đều sửa được sau khi tạo trường, nhưng chỉ ảnh hưởng tới các mã cấp về sau:

  • Các mã đã cấp giữ nguyên đúng nội dung lúc cấp. Hệ thống chỉ lưu mã đã kết xuất — không còn con số riêng để tạo lại.
  • Khóa phạm vi mới sẽ bắt đầu bộ đếm mới từ 1, nên một mã mới có thể trùng với mã đã cấp theo phạm vi cũ. Nếu điều đó quan trọng, hãy đưa thêm yếu tố phân tách (năm, phòng ban) vào khóa.
  • Sửa mẫu cũng là cách gỡ hai lỗi từ chối: "trường X đang được số tự động Y sử dụng" khi xóa trường, và "không thể đổi đích của trường tham chiếu … khi có số tự động đi qua nó" khi trỏ lại tham chiếu. Hãy bỏ đọc trường đó trong mẫu rồi thử lại.
  • Mẫu không đọc được trường formula. Số được cấp trước khi công thức được tính, nên mẫu sẽ kết xuất một giá trị chưa được ghi. Thay vào đó hãy đưa thẳng biểu thức của công thức vào mẫu — mẫu có sẵn cùng bộ hàm và bộ lọc.

Công thức đọc bản ghi khác

Một công thức có thể đọc một trường của bản ghi mà trường tham chiếu trỏ tới. Viết khóa của trường tham chiếu, một dấu chấm, rồi khóa của trường bên thực thể kia:

TrườngKiểuBiểu thứcGiá trị
customerreference → Khách hàng(một khách hàng)
tierformula · Kết quả văn bản"VIP" if customer.is_vip else "Thường"VIP
buyerformula · Kết quả văn bảncustomer.nameAn

Bên trong công thức như vậy, customer là chính bản ghi khách hàng — dùng customer.id để lấy id của nó. Nếu đơn hàng chưa có khách hàng, customer.is_vip để trống, và được tính là Không.

Giá trị không tự theo bản ghi kia

Giá trị được tính khi lưu chính bản ghi này, rồi được lưu lại. Nếu sau đó khách hàng thay đổi — chẳng hạn không còn là VIP — các đơn hàng đã có vẫn giữ giá trị cũ cho tới khi từng đơn được lưu lại. Trình chỉnh sửa nhắc điều này khi bạn viết công thức, và nhắc lại khi bạn lưu.

Đổi biểu thức của công thức sẽ tính lại mọi bản ghi hiện có ở chế độ nền, nên đó cũng là cách cập nhật tất cả cùng lúc.

Ai xem được đơn hàng thì thấy giá trị của công thức, kể cả khi không mở được khách hàng đó. Nếu cần hạn chế giá trị này, hãy đánh dấu chính công thức là Nhạy cảm.

Các cách đọc sau bị từ chối khi lưu công thức, kèm lý do:

  • Một reference_list — nó trỏ tới nhiều bản ghi, nên không có một giá trị duy nhất để đọc.
  • Tham chiếu tới Người dùng, Nhóm hoặc Đơn vị, kể cả chủ sở hữu của bản ghi.
  • Đi quá một bước, như customer.region.label. Hãy thêm một công thức bên Khách hàng đọc region.label, rồi đọc công thức đó từ đây.
  • Một trường mà thực thể kia không có.
  • Một trường Nhạy cảm của thực thể kia — kể cả khi chính công thức đã là Nhạy cảm.
  • Dùng riêng customer cùng với customer.something trong một công thức. Hãy viết customer.id để lấy id.

Không có gì ngăn việc trường bên thực thể kia bị xóa hoặc bị đánh dấu Nhạy cảm về sau. Khi đó công thức sẽ lưu giá trị trống từ lần lưu tiếp theo của từng bản ghi.

Bắt buộc & Nhạy cảm

Hai cờ này áp dụng cho hầu hết các kiểu trường, độc lập với Kiểu:

  • Bắt buộc — không thể tạo bản ghi khi trường này để trống. Không đặt được cho formula hoặc auto_number, vì giá trị của chúng do hệ thống tự ghi chứ không phải người dùng nhập.
  • Nhạy cảm — giá trị bị che với người đọc không được hồ sơ bảo mật trường nào cấp quyền xem trường này. Một trường nhạy cảm tự động không thể tìm kiếm nhanh hay tạo facet (tránh lộ giá trị qua phân bố). Nếu một formula đọc trường nhạy cảm, bản thân nó cũng phải đánh dấu Nhạy cảm — quy tắc này được kiểm tra khi lưu. Một công thức hoàn toàn không đọc được trường nhạy cảm của bản ghi khác (xem Công thức đọc bản ghi khác).

Ràng buộc giá trị

Bên dưới Bắt buộc & Nhạy cảm, mỗi trường có thể có thêm một mục Kiểm tra giá trị — ràng buộc về hình dạng của giá trị, khác với Bắt buộc (vốn chỉ hỏi có-hay-không). Mục này chỉ hiện khi kiểu trường có ràng buộc để khai báo:

KiểuRàng buộc khả dụng
textĐộ dài cho phép (tối thiểu/tối đa số ký tự) · Mẫu ký tự (biểu thức chính quy, ví dụ ^[A-Z]{2}-\d{4}$ cho AB-1234) · Kiểm tra định dạng
numberKhoảng cho phép (tối thiểu/tối đa)
multi_select, reference_listSố mục cho phép (tối thiểu/tối đa số lựa chọn)

boolean, date, datetime, enum, reference, file, formula và auto_number không có ràng buộc giá trị nào — mục Kiểm tra giá trị không xuất hiện trên các kiểu này.

Mọi ô đều bỏ trống được ở một đầu nếu không cần giới hạn đầu đó — ví dụ chỉ đặt tối đa mà không đặt tối thiểu.

Kiểm tra định dạng là một công tắc riêng, chỉ đặt được cho text và chỉ khi định dạng hiển thị của trường là email hoặc liên kết (url) — hai định dạng duy nhất có một chuẩn để đối chiếu. Đặt định dạng khác rồi mới bật công tắc này bị từ chối: "Trường {định dạng} không có định nghĩa chuẩn để đối chiếu, nên chỉ email và liên kết mới kiểm tra được."

Ràng buộc được kiểm tra ở mọi lần ghi — biểu mẫu tạo, sửa trực tiếp trên bản ghi, và cả bước Bản ghi thực thể của quy trình — chứ không riêng biểu mẫu tạo bản ghi thủ công. Đây là điều làm nó khác một zod schema phía giao diện: giao diện kiểm tra trước để phản hồi ngay khi gõ, nhưng máy chủ kiểm tra lại y hệt, nên một quy trình ghi giá trị sai vẫn bị từ chối dù không ai gõ gì cả.

Ràng buộc chỉ được xét trên những trường mà lần ghi đó thật sự đổi. Một bản ghi đang giữ giá trị vượt giới hạn — vì được tạo trước khi ràng buộc tồn tại — vẫn sửa được bình thường ở những trường khác; ràng buộc chỉ chặn khi chính trường đó bị đổi tới một giá trị vẫn còn vượt giới hạn.

Khi một giá trị vi phạm, thông báo nêu đúng lý do:

Vi phạmThông báo
Vượt tối đa (number)"lớn hơn giá trị tối đa của trường này"
Dưới tối thiểu (number)"nhỏ hơn giá trị tối thiểu của trường này"
Dài hơn tối đa (text)"dài hơn mức trường này cho phép"
Ngắn hơn tối thiểu (text)"ngắn hơn mức trường này cho phép"
Nhiều mục hơn tối đa (multi_select/reference_list)"có nhiều mục hơn mức trường này cho phép"
Ít mục hơn tối thiểu"có ít mục hơn mức trường này cho phép"
Không khớp Mẫu ký tự"không đúng định dạng yêu cầu"
Bật Kiểm tra định dạng nhưng giá trị sai định dạng"không phải là giá trị hợp lệ cho trường này"

Ràng buộc giá trị nói về một trường. Khi điều cần diễn đạt trải trên nhiều trường — "ngày kết thúc phải sau ngày bắt đầu", hay chỉ áp dụng lúc tạo mới hoặc khi một trường khác vừa đổi — đó là việc của Quy tắc bản ghi, không phải mục này.

Định dạng hiển thị

Định dạng chỉ ảnh hưởng đến cách giá trị hiển thị — bộ lọc, sắp xếp và giá trị lưu trữ không đổi.

KiểuCác định dạng khả dụng
textemail, url, phone, richtext
numbercurrency (kèm mã tiền tệ), percent (giá trị lưu chính là con số phần trăm, không nhân/chia lại), duration (đơn vị lưu giây/phút/giờ + kiểu hiển thị: dạng người-đọc "2h 5m", h:mm, hoặc h:mm:ss), rating (điểm tối đa, mặc định 5, tối đa 10)
date / datetimedd_mm_yyyy, mm_dd_yyyy, iso, long, month_year, relative; datetime có thêm Kiểu giờ 12h/24h
fileimage (hiển thị dạng ảnh thu nhỏ)
formulaKế thừa các định dạng của Kiểu kết quả đã khai báo (ví dụ kết quả kiểu number thì dùng được currency, percent, …)

boolean, enum, multi_select, reference và reference_list không có tùy chọn định dạng hiển thị riêng — giá trị luôn hiển thị nguyên trạng.

auto_number thì tùy chế độ: ở chế độ Mã có định dạng nó không có tùy chọn định dạng, vì Mẫu mã số đã định hình giá trị rồi. Ở chế độ Số, nó dùng được các định dạng của number ở trên — số chữ số thập phân và dấu phân tách là hai thứ hữu ích với một số thứ tự.

Khóa định danh — sửa được, lập lại chỉ mục ở chế độ nền

Khóa định danh (Identity key) là một hoặc nhiều trường quyết định hai bản ghi có "trùng nhau" không — dùng khi thao tác Upsert của bước Bản ghi thực thể cần tìm-hoặc-tạo bản ghi theo giá trị nghiệp vụ thay vì id nội bộ. Bạn thiết lập nó tại panel Khóa định danh trong Trình tạo thực thể, và có thể thêm nhiều khóa (mỗi khóa là một cách so khớp độc lập).

Thay đổi khóa trên thực thể đã có bản ghi

Thêm một khóa, hoặc đổi các trường cấu thành một khóa, đồng nghĩa với việc phải lập lại chỉ mục cho mọi bản ghi hiện có. Việc này chạy ở chế độ nền:

  1. Khóa được lưu ở trạng thái đang lập chỉ mục. Trong lúc đó khóa đã được khai báo nhưng chưa dùng để so khớp được — thao tác Upsert theo khóa này sẽ bị từ chối, thay vì trả lời dựa trên một chỉ mục còn dang dở (điều đó sẽ tạo ra bản trùng của một bản ghi mà quá trình lập chỉ mục chưa kịp chạm tới).
  2. Khi hoàn tất, khóa chuyển sang hoạt động và Upsert chạy bình thường.
  3. Nếu dữ liệu hiện có chứa giá trị trùng lặp cho khóa, quá trình dừng lại và khóa bị đánh dấu thất bại, kèm số lượng trùng lặp tìm được. Hãy sửa dữ liệu rồi bấm Lập lại chỉ mục.

Đổi tên khóa hoặc xóa hẳn một khóa thì không cần lập lại chỉ mục và có hiệu lực ngay.

Một khóa thuộc về cả thực thể, không thuộc về phần bạn nhìn thấy

Khóa định danh là quy tắc duy nhất trên toàn bộ dữ liệu của thực thể — kể cả những bản ghi mà người tra khóa không được xem. Vì vậy một lượt tra khóa không bao giờ được phép trả lời "khóa này còn trống" chỉ vì bản ghi đang giữ nó nằm ngoài tầm với: trả lời như thế sẽ đẩy nhánh tạo mới chạy, và sinh ra bản trùng của đúng cái bản ghi mà người tra chỉ đơn thuần là không được phép xem.

Trên bước Bản ghi thực thể, quy tắc ấy có hai hình thức. Upsert đòi chủ thể của lượt chạy có phạm vi Xem · Toàn tổ chức trên Thực thể; hẹp hơn thì bước thất bại ngay trước khi tra khóa. Get one theo Key vẫn chạy được với phạm vi hẹp, nhưng khi khóa khớp một bản ghi bị che thì lượt chạy dừng lại với nhóm nguyên nhân scope_mismatch, chứ không báo là chưa có. Trang của bước ấy nói kỹ cả hai điều kiện.

Quy trình đã xuất bản sẽ theo khóa mới

Sau khi khóa thay đổi, các quy trình đã xuất bản sẽ so khớp theo định nghĩa mới mà không cần xuất bản lại. Đây là chủ ý — khóa là quy tắc duy nhất trên dữ liệu dùng chung, và ràng buộc của bước ("so khớp theo khóa Email") không đổi; chỉ có ý nghĩa của "khóa Email" là đổi. Nếu vẫn so khớp theo hình dạng cũ thì đơn giản là sẽ không tìm thấy bản ghi nào.

Tham chiếu & liên kết ngược

Trường reference / reference_list trỏ tới một Thực thể đích — được chọn khi thêm trường và cố định sau đó.

  • Liên kết ngược (tùy chọn) — đặt một Tên chiều ngược (khóa + nhãn hiển thị) để bản ghi ở Thực thể đích liệt kê ngược lại các bản ghi trỏ tới nó, qua record.<đích>.<chiều ngược>. Ví dụ: thực thể Hóa đơn có trường tham chiếu tới Nhà cung cấp với chiều ngược hoa_don — xem một bản ghi nhà cung cấp, mục Liên quan sẽ liệt kê mọi hóa đơn trỏ tới nó.
  • Trỏ tới Người dùng hoặc Nhóm — không phải một kiểu trường riêng, mà chỉ là một reference/reference_list có Thực thể đích là Thực thể hệ thống Người dùng hoặc Nhóm. Khi đó:
    • Không thể đặt liên kết ngược — Thực thể hệ thống không nhận trường liên kết ngược tùy chỉnh.
    • Với đích Người dùng, panel có thêm hai bộ chọn Chỉ người trong nhóm (Only users in group(s)) / Loại trừ người trong nhóm (Exclude users in group(s)), giới hạn danh sách chọn của trường theo (hoặc ngoài) thành viên các nhóm đã chọn. Máy chủ kiểm tra lại ràng buộc này khi ghi giá trị, không chỉ ở giao diện. Đích Nhóm không có cặp bộ chọn này.
  • Trỏ tới Đơn vị — cũng chỉ là một reference/reference_list, với Thực thể đích là Thực thể hệ thống Đơn vị (Units). Giống hai trường hợp trên, không đặt được liên kết ngược; và cũng không có bộ lọc theo nhóm — cặp bộ chọn đó chỉ dành riêng cho đích Người dùng. Khác biệt nằm ở ô nhập:
    • Trên biểu mẫu, trường hiện bộ chọn đơn vị — cùng ô tìm-và-chọn mà đích Người dùng và Nhóm dùng — với ô tìm kiếm Tìm đơn vị… (Search units…). Mỗi dòng là đường dẫn đầy đủ của đơn vị (Tổng công ty / Chi nhánh Bắc) kèm mã đơn vị, để hai đơn vị trùng tên vẫn phân biệt được. Đơn vị Đã lưu trữ (Archived) vẫn chọn được, vì một bản ghi hoàn toàn có thể đang trỏ tới một đơn vị về sau mới bị lưu trữ.
    • Ô chọn liệt kê toàn bộ danh bạ đơn vị và không thu hẹp được: trường này chỉ ghi lại một đơn vị, nó không quyết định bản ghi được lưu vào đâu. Đừng nhầm nó với khối Đơn vị trên biểu mẫu tạo bản ghi — Thực thể hệ thống giải thích khác biệt đó cho người dùng cuối.
    • Ở chế độ chỉ đọc, trường hiện đường dẫn đơn vị dưới dạng văn bản chứ không phải một ô chọn bị làm mờ; trường một giá trị chưa chọn gì thì hiện một dấu gạch ngang —.

Cả ba Thực thể hệ thống đều không duyệt được như một bảng bản ghi thông thường, nên trường tham chiếu trỏ vào chúng dùng bộ chọn danh bạ riêng thay cho ô chọn bản ghi — đó là lý do ba trường hợp này được kể riêng, tách khỏi tham chiếu tới một Thực thể do bạn tự tạo.

Xem thêm Thực thể hệ thống về Người dùng, Nhóm và Đơn vị; bản thân cây đơn vị được dựng tại Đơn vị tổ chức.

Quan hệ trong đồ thị ngữ cảnh

Một trường reference / reference_list trỏ tới Thực thể do bạn tạo có thể khai báo một quan hệ: ngoài việc lưu liên kết, nó phát biểu liên kết ấy vào đồ thị ngữ cảnh, để mục Liên quan trên trang bản ghi, phần ngữ cảnh mà trợ lý AI đọc, và các biểu đồ tách theo quan hệ đều dùng được.

Thẻ Quan hệ trong trình sửa trường có:

  • Khai báo quan hệ — bật/tắt. Mặc định bật, giữ nguyên cách hoạt động trước đây.
  • Khóa quan hệ — định danh của quan hệ. Cố định ngay sau lần lưu đầu tiên: nó là tên mà mọi liên kết đã ghi và mọi biểu đồ đã lưu đang gọi, nên đổi khóa sẽ làm hỏng những thứ đó.
  • Tên quan hệ — tên hiển thị. Chỉ một tên, đọc từ đầu nào cũng vậy: đứng ở Hợp đồng bạn thấy Công ty dưới mục "Bên thanh toán", đứng ở chính Công ty đó bạn thấy các Hợp đồng cũng dưới "Bên thanh toán". Chiều của quan hệ đến từ bản thân liên kết, nên không cần đặt hai nhãn. Hai tham chiếu cùng trỏ tới một đích được phân biệt bằng tên quan hệ ("Bên thanh toán" so với "Bên nhận hàng"), chứ không phải bằng nhãn ở mỗi đầu.
  • Số lượng (một hay nhiều) không nhập tay: nó suy ra từ kiểu trường và cờ Bắt buộc, vì chính trường mới là nơi ràng buộc được áp dụng.
  • Trỏ tới Người dùng, Nhóm hoặc Đơn vị thì không khai báo được. Liên kết tới danh bạ không ghi vào đồ thị ngữ cảnh, nên thẻ Quan hệ chỉ hiển thị một dòng giải thích thay cho công tắc.

Khi nào nên tắt

Không phải tham chiếu nào cũng là một quan hệ đáng hỏi. nguoi_duyet hay nguoi_phu_trach_mac_dinh thường chỉ là tra cứu — bạn lưu ai đó vào bản ghi, nhưng không ai đặt câu hỏi cho đồ thị thông qua nó. Mỗi quan hệ được khai báo đều tốn một mục trong danh mục ngữ cảnh, một thuật ngữ trong vốn từ của trợ lý AI, và một lượt đồng bộ liên kết mỗi lần lưu bản ghi.

Tắt Khai báo quan hệ khi trường chỉ để tra cứu; phần còn lại của thẻ thu gọn lại, vì nó chỉ mô tả một quan hệ sẽ không tồn tại.

Tắt một quan hệ đang có dữ liệu sẽ thu hồi dữ liệu ấy

Những phát biểu đã ghi dưới quan hệ đó bị thu hồi: mục Liên quan dựa trên nó sẽ trống, và biểu đồ nào tách theo nó sẽ không còn phân tách được nữa. Bản thân giá trị của trường không mất — liên kết vẫn được lưu, chỉ là không còn được phát biểu vào đồ thị. Bật lại sẽ khôi phục đúng quan hệ cũ (cùng khóa), nhưng các phát biểu đã thu hồi chỉ xuất hiện trở lại khi bản ghi tương ứng được lưu lần kế tiếp.

Khi bản ghi đích bị xoá

Trên mỗi trường reference / reference_list, ngay dưới ô chọn Thực thể đích, có một lựa chọn quyết định điều gì xảy ra với những bản ghi đang trỏ tới một bản ghi đích khi bản ghi đó bị xoá. Đây là một quy tắc về dữ liệu, không phải về giao diện: máy chủ áp dụng nó cho mọi lượt xoá, kể cả xoá từ quy trình.

Giả sử thực thể Hóa đơn có trường nha_cung_cap trỏ tới Nhà cung cấp:

Lựa chọnNghĩa là
Chặn việc xoá (mặc định)Không thể xoá một Nhà cung cấp khi còn Hóa đơn trỏ tới nó. Lượt xoá bị từ chối, kèm danh sách những gì đang chặn
Xoá trống trường nàyHóa đơn vẫn còn; trường nha_cung_cap của nó được xoá trống
Xoá luôn bản ghi nàyXoá một Nhà cung cấp xoá mọi Hóa đơn trỏ tới nó

Không đặt gì thì hành xử như Chặn việc xoá — lựa chọn an toàn nhất, và là hành vi của mọi trường tham chiếu trước khi cài đặt này tồn tại.

Vài điều cần biết trước khi đổi:

  • "Xoá luôn bản ghi này" không có trên reference_list. Một bản ghi giữ danh sách năm mươi tham chiếu không nên bị huỷ chỉ vì một trong năm mươi cái đó biến mất. Máy chủ từ chối, nên lựa chọn ấy cũng không được hiển thị.
  • Con số bên dưới lựa chọn là số liên kết đang tồn tại. Đổi chính sách áp dụng ngay cho mọi bản ghi đang dùng quan hệ này, nên chuyển Hóa đơn.nha_cung_cap sang "Xoá luôn bản ghi này" có thể khiến lần xoá nhà cung cấp kế tiếp kéo theo hàng trăm hóa đơn. Con số hiện ra trước khi bạn chọn, chứ không phải sau khi lưu.
  • "Xoá trống trường này" bị từ chối trên trường Bắt buộc, hoặc trường nằm trong một khóa định danh — xoá trống nó sẽ tạo ra một bản ghi không hợp lệ.
  • Xoá theo dây chuyền có giới hạn về cả độ sâu lẫn số bản ghi. Một dây chuyền vượt giới hạn bị từ chối, không ghi gì cả — chứ không xoá một nửa.
  • Mọi thứ bị xoá đều vào thùng rác cùng nhau, dưới một biên nhận duy nhất, nên khôi phục mang lại cả cụm. Xem Thùng rác và khôi phục.

Trường hiển thị (display field)

Trường nào làm tên hiển thị của một bản ghi trên danh sách, thẻ và tiêu đề chi tiết là một cài đặt riêng biệt, cấu hình ở tab Cài đặt của Thực thể — không phải một thuộc tính của kiểu trường. Xem View và cài đặt duyệt.


Xem thêm Tổng quan về Thực thể để quay lại phần tổng quan.

On this page