Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Tạo kèo bóng đá pháp

tên

Tạo kèo bóng đá pháp-Xác định kèo bóng đá pháp bảo mật cấp hàng mới cho bảng

Synopsis

Tạo kèo bóng đá pháptêntrênTable_Name[cho tất cả | Chọn | Chèn | Cập nhật | XÓA BỎ  ]
    [ ĐẾNROME_NAME| Công khai | Current_user | Session_user [, ...]]
    [Sử kèo bóng đá pháp (sử dụng_expression)]]
    [Với kiểm tra (Check_expression)]

Mô tả

TheTạo kèo bóng đá phápLệnh xác định kèo bóng đá pháp bảo mật cấp hàng mới cho bảng. Lưu ý rằng bảo mật cấp hàng phải được bật trên bảng (sử dụngBảng thay đổi ... Kích hoạt bảo mật cấp hàng) Để áp dụng các kèo bóng đá pháp được tạo ra.

Một kèo bóng đá pháp cấp cho phép chọn, chèn, cập nhật hoặc xóa các hàng phù hợp với biểu thức kèo bóng đá pháp có liên quan. Các hàng bảng hiện có được kiểm tra đối với biểu thức được chỉ định trongsử kèo bóng đá pháp, trong khi các hàng mới sẽ được kèo bóng đá pháp quaChènhoặcCập nhậtđược kiểm tra đối với biểu thức được chỉ định trongvới kiểm tra. Khi Asử kèo bóng đá phápBiểu thức trả về đúng cho một hàng đã cho sau đó hàng đó có thể hiển thị cho người dùng, trong khi nếu sai hoặc null được trả về thì hàng không hiển thị. Khi Avới kiểm traBiểu thức trả về true cho một hàng thì hàng đó được chèn hoặc cập nhật, trong khi nếu sai hoặc null được trả về thì xảy ra lỗi.

choChènCập nhậtCâu lệnh,với kiểm traBiểu thức được thi hành sautrướcTrình kích hoạt được bắn và trước khi bất kỳ sửa đổi dữ liệu thực tế nào được thực hiện. Do đó ATrước hàngTrigger có thể sửa đổi dữ liệu sẽ được chèn, ảnh hưởng đến kết quả của kiểm tra kèo bóng đá pháp bảo mật.với kiểm traBiểu thức được thực thi trước mọi ràng buộc khác.

Tên kèo bóng đá pháp là mỗi bảng. Do đó, một tên kèo bóng đá pháp có thể được sử dụng cho nhiều bảng khác nhau và có định nghĩa cho mỗi bảng phù hợp với bảng đó.

kèo bóng đá pháp có thể được áp dụng cho các lệnh cụ thể hoặc cho các vai trò cụ thể. Mặc định cho các kèo bóng đá pháp mới được tạo là chúng áp dụng cho tất cả các lệnh và vai trò, trừ khi có quy định khác. Nhiều kèo bóng đá pháp có thể áp dụng cho một lệnh duy nhất; Xem bên dưới để biết thêm chi tiết.Bảng 1Tóm tắt cách các loại kèo bóng đá pháp khác nhau áp dụng cho các lệnh cụ thể.

Đối với các kèo bóng đá pháp có thể có cảSử kèo bóng đá phápvới kiểm traBiểu thức (tất cảCập nhật), nếu khôngVới kiểm traBiểu thức được xác định, sau đóSử kèo bóng đá phápBiểu thức sẽ được sử kèo bóng đá pháp cả hai để xác định các hàng nào có thể nhìn thấy (bình thườngSử kèo bóng đá pháptrường hợp) và các hàng mới nào sẽ được phép thêm (với kiểm tratrường hợp).

Nếu bảo mật cấp hàng được bật cho bảng, nhưng không có kèo bóng đá pháp áp dụng nào tồn tại, A"mặc định từ chối"kèo bóng đá pháp được giả định, để không có hàng nào được hiển thị hoặc cập nhật.

tham số

tên

Tên của kèo bóng đá pháp sẽ được tạo. Điều này phải khác biệt với tên của bất kỳ kèo bóng đá pháp nào khác cho bảng.

Table_Name

Tên (Tùy chọn Lược đồ theo trình độ) của bảng kèo bóng đá pháp áp dụng cho.

lệnh

Lệnh áp dụng kèo bóng đá pháp. Các tùy chọn hợp lệ làtất cả, Chọn, Chèn, Cập nhậtXóa. tất cảlà mặc định. Xem bên dưới để biết thông tin cụ thể về cách áp kèo bóng đá pháp chúng.

ROME_NAME

Vai trò mà kèo bóng đá pháp sẽ được áp dụng. Mặc định làcông khai, sẽ áp dụng kèo bóng đá pháp cho tất cả các vai trò.

sử dụng_expression

bất kỳSQLBiểu thức có điều kiện (trả vềBoolean). Biểu thức có điều kiện không thể chứa bất kỳ chức năng tổng hợp hoặc cửa sổ nào. Biểu thức này sẽ được thêm vào các truy vấn đề cập đến bảng nếu bảo mật cấp hàng được bật. Các hàng mà biểu thức trả về đúng sẽ được hiển thị. Bất kỳ hàng nào mà biểu thức trả về sai hoặc null sẽ không hiển thị cho người dùng (trong mộtChọn) và sẽ không khả kèo bóng đá pháp để sửa đổi (trong mộtCập nhậthoặcXóa). Những hàng như vậy được áp kèo bóng đá pháp âm thầm; Không có lỗi được báo cáo.

Check_expression

bất kỳSQLBiểu thức có điều kiện (trả vềBoolean). Biểu thức có điều kiện không thể chứa bất kỳ chức năng tổng hợp hoặc cửa sổ nào. Biểu thức này sẽ được sử kèo bóng đá pháp trongChènCập nhậtTruy vấn đối với bảng nếu bảo mật cấp hàng được bật. Chỉ các hàng mà biểu thức đánh giá thành true sẽ được cho phép. Một lỗi sẽ được ném nếu biểu thức đánh giá là sai hoặc null cho bất kỳ bản ghi nào được chèn hoặc bất kỳ bản ghi nào có kết quả từ bản cập nhật. Lưu ý rằngCheck_expressionđược đánh giá dựa trên các nội dung mới được đề xuất của hàng, không phải nội dung gốc.

kèo bóng đá pháp trên mỗi lệnh

tất cả

sử kèo bóng đá pháptất cảĐối với một kèo bóng đá pháp có nghĩa là nó sẽ áp dụng cho tất cả các lệnh, bất kể loại lệnh. Nếu mộttất cảkèo bóng đá pháp tồn tại và các kèo bóng đá pháp cụ thể hơn tồn tại, sau đó cảtất cảkèo bóng đá pháp và kèo bóng đá pháp cụ thể hơn (hoặc kèo bóng đá pháp) sẽ được áp dụng. Ngoài ra,tất cảkèo bóng đá pháp sẽ được áp dụng cho cả phía lựa chọn của một truy vấn và phía sửa đổi, sử dụngsử kèo bóng đá phápBiểu thức cho cả hai trường hợp nếu chỉ Asử kèo bóng đá phápBiểu thức đã được xác định.

làm ví dụ, nếuCập nhậtđược ban hành, sau đó làtất cảkèo bóng đá pháp sẽ được áp dụng cho cả những gìCập nhậtSẽ có thể chọn làm hàng để được cập nhật (áp kèo bóng đá phápsử kèo bóng đá phápBiểu thức) và đến các hàng được cập nhật kết quả, để kiểm tra xem chúng có được phép thêm vào bảng không (áp kèo bóng đá phápvới kiểm traBiểu thức, nếu được xác định vàsử kèo bóng đá phápBiểu thức khác). Nếu mộtChènhoặcCập nhậtLệnh cố gắng thêm các hàng vào bảng không vượt quatất cảkèo bóng đá phápvới kiểm traBiểu thức, toàn bộ lệnh sẽ bị hủy bỏ.

Chọn

Sử kèo bóng đá phápChọnĐối với kèo bóng đá pháp có nghĩa là nó sẽ áp dụng choChọnTruy vấn và bất cứ khi nàoChọnQuyền được yêu cầu đối với mối quan hệ kèo bóng đá pháp được xác định cho. Kết quả là chỉ những bản ghi đó từ mối quan hệ vượt quaChọnkèo bóng đá pháp sẽ được trả lại trong thời gianChọnTruy vấn và truy vấn đó yêu cầuChọnQuyền, chẳng hạn nhưCập nhật, cũng sẽ chỉ thấy những bản ghi được cho phép bởiChọnkèo bóng đá pháp. MỘTChọnkèo bóng đá pháp không thể cóvới kiểm traBiểu thức, vì nó chỉ áp kèo bóng đá pháp trong trường hợp các bản ghi được lấy từ mối quan hệ.

Chèn

sử kèo bóng đá phápChènĐối với một kèo bóng đá pháp có nghĩa là nó sẽ áp dụng choChènlệnh. Hàng được chèn không thông qua kèo bóng đá pháp này sẽ dẫn đến lỗi vi phạm kèo bóng đá pháp và toàn bộChènLệnh sẽ bị hủy bỏ. MỘTChènkèo bóng đá pháp không thể cósử kèo bóng đá phápBiểu thức, vì nó chỉ áp kèo bóng đá pháp trong trường hợp các bản ghi được thêm vào quan hệ.

Lưu ý rằngChènvớitrên xung đột do cập nhậtKiểm traChènkèo bóng đá pháp 'với kiểm traBiểu thức chỉ cho các hàng được nối với mối quan hệ củaChènđường dẫn.

Cập nhật

sử kèo bóng đá phápCập nhậtĐối với kèo bóng đá pháp có nghĩa là nó sẽ áp dụng choCập nhật, Chọn để cập nhậtChọn chia sẻCác lệnh, cũng như phụ trợtrên xung đột do cập nhậtmệnh đề củaChènlệnh. TừCập nhậtLiên quan đến việc kéo một bản ghi hiện có và thay thế nó bằng một bản ghi được sửa đổi mới,Cập nhậtkèo bóng đá pháp chấp nhận cả ASử kèo bóng đá phápBiểu thức và Avới kiểm traBiểu thức. TheSử kèo bóng đá phápBiểu thức xác định bản ghi nàoCập nhậtLệnh sẽ thấy để hoạt động chống lại, trong khivới kiểm traBiểu thức xác định các hàng được sửa đổi nào được phép được lưu trữ trở lại vào mối quan hệ.

Bất kỳ hàng nào có giá trị cập nhật không vượt quavới kiểm traBiểu thức sẽ gây ra lỗi và toàn bộ lệnh sẽ bị hủy bỏ. Nếu chỉ mộtsử kèo bóng đá phápmệnh đề được chỉ định, sau đó mệnh đề đó sẽ được sử kèo bóng đá pháp cho cả haisử kèo bóng đá phápvới kiểm tratrường hợp.

Thông thường làCập nhậtLệnh cũng cần đọc dữ liệu từ các cột trong mối quan hệ được cập nhật (ví dụ: trong AWHEREmệnh đề hoặc ATrở vềmệnh đề hoặc trong một biểu thức ở phía bên phải củasetmệnh đề). Trong trường hợp này,ChọnQuyền cũng được yêu cầu đối với mối quan hệ được cập nhật và thích hợpChọnhoặctất cảkèo bóng đá pháp sẽ được áp dụng ngoàiCập nhậtkèo bóng đá pháp. Do đó, người dùng phải có quyền truy cập vào (các) hàng được cập nhật thông quaChọnhoặctất cảkèo bóng đá pháp ngoài việc được cấp phép cập nhật (các) hàng thông quaCập nhậthoặctất cảkèo bóng đá pháp.

Khi mộtChènLệnh có phụ trợtrên xung đột do cập nhậtmệnh đề, nếuCập nhậtĐường dẫn được thực hiện, hàng sẽ được cập nhật trước tiên được kiểm tra đối vớiSử kèo bóng đá phápBiểu thức của bất kỳCập nhậtkèo bóng đá pháp, và sau đó hàng cập nhật mới được kiểm tra đối vớivới kiểm traBiểu thức. Tuy nhiên, lưu ý rằng không giống như độc lậpCập nhậtlệnh, nếu hàng hiện tại không vượt quaSử kèo bóng đá phápBiểu thức, một lỗi sẽ được ném (TheCập nhậtđường dẫn sẽkhông bao giờĐược tránh âm thầm).

Xóa

Sử kèo bóng đá phápXóaĐối với một kèo bóng đá pháp có nghĩa là nó sẽ áp dụng choXóalệnh. Chỉ các hàng vượt qua kèo bóng đá pháp này sẽ được nhìn thấy bởiXóaLệnh. Có thể có các hàng có thể nhìn thấy thông quaChọnkhông có sẵn để xóa, nếu chúng không vượt quaSử kèo bóng đá phápBiểu thức choXóakèo bóng đá pháp.

Trong hầu hết các trường hợp AXóaLệnh cũng cần đọc dữ liệu từ các cột trong mối quan hệ mà nó đang xóa khỏi (ví dụ: trong AWHEREmệnh đề hoặc ATrở vềmệnh đề). Trong trường hợp này,ChọnQuyền cũng được yêu cầu đối với mối quan hệ và thích hợpChọnhoặctất cảkèo bóng đá pháp sẽ được áp dụng ngoàiXóakèo bóng đá pháp. Do đó, người dùng phải có quyền truy cập vào (các) hàng bị xóa thông quaChọnhoặctất cảkèo bóng đá pháp ngoài việc được cấp phép để xóa (các) hàng thông qua AXóahoặctất cảkèo bóng đá pháp.

AXóakèo bóng đá pháp không thể cóvới kiểm traBiểu thức, vì nó chỉ áp kèo bóng đá pháp trong trường hợp các bản ghi bị xóa khỏi mối quan hệ, để không có hàng mới để kiểm tra.

Bảng 1. Các kèo bóng đá pháp được áp dụng theo loại lệnh

lệnh Chọn/Tất cả kèo bóng đá pháp Chèn/tất cả kèo bóng đá pháp Cập nhật/Tất cả kèo bóng đá pháp xóa/tất cả kèo bóng đá pháp
Sử kèo bóng đá pháp biểu thức Với biểu thức kiểm tra Sử kèo bóng đá pháp biểu thức Với biểu thức kiểm tra Sử kèo bóng đá pháp biểu thức
Chọn hàng hiện tại - - - -
Chọn để cập nhật/chia sẻ hàng hiện tại - hàng hiện tại - -
Chèn - hàng mới - - -
Chèn ... Trả về hàng mới[A] hàng mới - - -
Cập nhật hàng hiện tại & mới[A] - hàng hiện tại hàng mới -
Xóa hàng hiện tại[A] - - - hàng hiện tại
trên xung đột do cập nhật hàng hiện tại & mới - hàng hiện tại hàng mới -
ghi chú:
a.Nếu cần đọc quyền truy cập vào hàng hiện tại hoặc hàng mới (ví dụ: AWHEREhoặcTrở vềmệnh đề đề cập đến các cột từ mối quan hệ).

Ứng dụng nhiều kèo bóng đá pháp

Khi nhiều kèo bóng đá pháp của các loại lệnh khác nhau áp dụng cho cùng một lệnh (ví dụ:ChọnCập nhậtkèo bóng đá pháp được áp dụng cho mộtCập nhậtLệnh), sau đó người dùng phải có cả hai loại quyền (ví dụ: quyền chọn hàng từ mối quan hệ cũng như quyền cập nhật chúng). Do đó, các biểu thức cho một loại kèo bóng đá pháp được kết hợp với các biểu thức cho loại kèo bóng đá pháp khác bằng cách sử dụngtoán tử.

Khi nhiều kèo bóng đá pháp của cùng loại lệnh áp dụng cho cùng một lệnh, thì ít nhất một trong các kèo bóng đá pháp phải cấp quyền truy cập vào mối quan hệ. Do đó, các biểu thức từ tất cả các kèo bóng đá pháp của loại đó được kết hợp bằng cách sử dụnghoặctoán tử. Nếu không có kèo bóng đá pháp hiện hành, thì quyền truy cập bị từ chối.

Lưu ý rằng, với mục đích kết hợp nhiều kèo bóng đá pháp,tất cảkèo bóng đá pháp được coi là có cùng loại như bất kỳ loại kèo bóng đá pháp nào khác đang được áp dụng.

Ví dụ, trong mộtCập nhậtLệnh yêu cầu cảChọnCập nhậtQuyền, nếu có nhiều kèo bóng đá pháp áp dụng của từng loại, chúng sẽ được kết hợp như sau:

(Biểu thứcTừ chọn/tất cả kèo bóng đá pháp 1
  HOẶCBiểu thứcTừ chọn/tất cả kèo bóng đá pháp 2
  HOẶC
  ...
)
VÀ
(Biểu thứcTừ cập nhật/tất cả kèo bóng đá pháp 1
  HOẶCBiểu thứcTừ bản cập nhật/tất cả kèo bóng đá pháp 2
  HOẶC
  ...
)

ghi chú

Bạn phải là chủ sở hữu của bảng để tạo hoặc thay đổi kèo bóng đá pháp cho nó.

Trong khi các kèo bóng đá pháp sẽ được áp dụng cho các truy vấn rõ ràng đối với các bảng trong cơ sở dữ liệu, chúng không được áp dụng khi hệ thống đang thực hiện kiểm tra tính toàn vẹn nội bộ hoặc xác thực các ràng buộc. Điều này có nghĩa là có những cách gián tiếp để xác định rằng một giá trị nhất định tồn tại. Một ví dụ về điều này là cố gắng chèn một giá trị trùng lặp vào một cột là khóa chính hoặc có một ràng buộc duy nhất. Nếu chèn không thành công thì người dùng có thể suy ra rằng giá trị đã tồn tại. . Sự tồn tại có thể được xác định bởi người dùng chèn các giá trị vào bảng tham chiếu, trong đó thành công sẽ chỉ ra rằng giá trị tồn tại trong bảng được tham chiếu. Những vấn đề này có thể được giải quyết bằng cách chế tạo cẩn thận các kèo bóng đá pháp để ngăn người dùng không thể chèn, xóa hoặc cập nhật các bản ghi ở tất cả những gì có thể chỉ ra một giá trị mà chúng không thể nhìn thấy hoặc bằng cách sử dụng các giá trị được tạo (ví dụ: các khóa thay thế) thay vì các phím có nghĩa bên ngoài.

Nói chung, hệ thống sẽ thực thi các điều kiện bộ lọc được áp dụng bằng các kèo bóng đá pháp bảo mật trước khi trình độ xuất hiện trong các truy vấn của người dùng, để ngăn chặn sự tiếp xúc vô tình của dữ liệu được bảo vệ với các chức năng do người dùng xác định có thể không đáng tin cậy. Tuy nhiên, các chức năng và toán tử được đánh dấu bởi hệ thống (hoặc quản trị viên hệ thống) làLeakproofCó thể được đánh giá trước các biểu thức kèo bóng đá pháp, vì chúng được coi là đáng tin cậy.

Vì các biểu thức kèo bóng đá pháp được thêm trực tiếp vào truy vấn của người dùng, chúng sẽ được chạy với quyền của người dùng chạy truy vấn tổng thể. Do đó, người dùng đang sử dụng kèo bóng đá pháp nhất định phải có thể truy cập bất kỳ bảng hoặc chức năng nào được tham chiếu trong biểu thức hoặc họ sẽ đơn giản nhận được lỗi bị từ chối khi cố gắng truy vấn bảng có bảo mật cấp hàng được bật. Điều này không thay đổi cách quan điểm hoạt động, tuy nhiên. Như với các truy vấn và chế độ xem thông thường, kiểm tra quyền và kèo bóng đá pháp cho các bảng được tham chiếu bởi một chế độ xem sẽ sử dụng quyền của chủ sở hữu xem và bất kỳ kèo bóng đá pháp nào áp dụng cho chủ sở hữu chế độ xem.

Thảo luận bổ sung và các ví dụ thực tế có thể được tìm thấy trongPhần 5.7.

Khả năng tương thích

Tạo kèo bóng đá phápPostgreSQLPhần mở rộng.