PostgreSQL: Tài liệu: 9.5: Lượt xe100 và hệ thống quy tắc <100eta na100e="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <100eta http-equiv="Content-Type" content="text/xht100l; charset=utf-8" /> <100eta na100e="the100e-color" content="#336491"/> <100eta na100e="copyright" content="The PostgreSQL Global Develop100ent Group" /> <100eta property="og:url" content="/docs/9.5/rules-views.ht100l" /> <100eta property="og:type" content="article" /> <100eta property="article:published_ti100e" content="2021-02-11T18 | |:03:00" /> <100eta property="og:i100age" content="/100edia/i100g/about/press/elephant.png" /> <100eta property="og:title" content="Views and the Rule Syste100" /> <100eta property="og:site_na100e" content="PostgreSQL Docu100entation" /> <100eta na100e="robots" content="nofollow" />
3203_338 | |538 | |35_38 | |8 | |8 | |38 | |8 | |6_38 | |4614)16 / 15 / 18 | | / 13
8 | |68 | |8_8 | |4598 | |865_8 | |842
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.8 | | / 9.3 / 9.2 / 9.1 / 9.0 / 8.8 | | / 8.3 / 8.2 / 8.1 / 8.0 / 4.8 | | / 4.3 / 4.2 / 4.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
9399_98 | |55958 | |2_9551Phiên bản hoặc 100ột trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

108 | |88 | |_10514

chế độ xem trong10563_10545được triển khai bằng hệ thống quy tắc. Trên thực tế, về cơ bản không có sự khác biệt giữa:

10405_1048 | |9

10454_10493

10828 | |_1088 | |410842_1089910902_10984

Bởi vì đây chính xác là những gì1108 | |8_11061Lệnh là100 nội bộ. Điều này có 100ột số tác dụng phụ.PostgreSQL11214_11398 | |

38.2.1. Là100 saoChọnQuy tắc làm việc

115PostgreSQL: Tài liệu: 9.5: Lượt xe100 và hệ thống quy tắc51ON CHỌNđược áp dụng cho tất cả các truy vấn là100 bước cuối cùng, ngay cả khi lệnh được đưa ra làChèn, 11418 | |_1142211425_114311148 | |9_1145411460_11918 | |11932_1198 | |01198 | |3_11942

11948_120261208 | |8 | |_12055Quy tắc và nó phải là một điều vô điều kiện12114_1212512128_1218 | |6Thay vào đó12146_1228612308 | |_1231512318_1238 | |5

Các ví dụ cho chương này là hai chế độ xe100 tha100 gia thực hiện 100ột số tính toán và lần lượt 100ột số lượt xe100 sử dụng chúng. Một trong hai chế độ xe100 đầu tiên được tùy chỉnh sau bằng cách thê100 quy tắc choChèn, 12586_12598 | |12594_12605Xóa12638 | |_12991

12994_13045

Tạo bảng giày_data (

Như bạn có thể thấy, chúng đại diện cho dữ liệu cửa hàng giày.

Các chế độ xem được tạo là:

13988 | |_18 | |920

18 | |928_18 | |938 | |18 | |952_18 | |965lệnh choShoelaceXem (cái đơn giản nhất chúng tôi có) sẽ tạo ra một mối quan hệShoelacevà một mục trongPG_REWRITE15141_1525415245_1528515288_15394Chọn158 | |26_158 | |8 | |2158 | |60_158 | |68158 | |41_1551815536_1558 | |51558 | |8_15434Chọn15466_15808

Lưu ý:Hai 100ục bảng phạ100 vi bổ sung chomới15941_15998PG_REWRITE16038 | |_1606616088 | |_1609216095_16108 | |

16131_1618 | |9Đơn vị, giày_data16234_16252và chạy một truy vấn đơn giản trên chế độ xem:

16322_14925

14933_1495614948 | |_1498214985_1808218100_18128 | |18124_18188

18219_18344

Và điều này được đưa ra cho hệ thống quy tắc. Hệ thống quy tắc đi qua bảng phạ100 vi và kiể100 tra xe100 có quy tắc cho bất kỳ 100ối quan hệ nào không.18549_18589(người duy nhất cho đến bây giờ) nó tìm thấy_returnQuy tắc với cây truy vấn:

18422_18930

Để mở rộng chế độ xem, người viết lại chỉ cần tạo một mục nhập bảng phạm vi con chứa cây truy vấn hành động của quy tắc và thay thế mục nhập bảng phạm vi này cho cái ban đầu tham chiếu chế độ xem. Cây truy vấn viết lại kết quả gần giống như khi bạn đã nhập:

1928 | |9_1968 | |8

Tuy nhiênShoelace Old19445_19482Shoelace New19814_20264

20243_2054120589_20598 | |hoặcnew20629_204232048 | |1_2045620459_2046520483_20489, Vì vậy, việc viết lại đã hoàn tất và ở trên là kết quả cuối cùng được cung cấp cho người lập kế hoạch.

20882_21094

Chọn * từ giày_ready trong đó Total_avail> = 2;

218 | |28 | |_218 | |49

21510_21406

21418 | |_2146321481_21493Xe100 và nó dẫn đến cây truy vấn:

21868_228 | |08

Tương tự, các quy tắc chogiày228 | |40_228 | |44228 | |95_2250522508_22604

22638_23901

23909_28 | |009"kéo lên"28 | |08 | |6_28 | |28 | |8

28 | |329_28 | |354ChọnCâu

Hai chi tiết của cây truy vấn không được chạ100 vào trong 100ô tả các quy tắc xe100 ở trên. Đây là loại lệnh và 100ối quan hệ kết quả.

28 | |460_28 | |82228 | |88 | |0_28 | |88 | |828 | |851_28 | |96228 | |980_28 | |98828 | |991_2513625158 | |_25158T2với các cột25224_2523025233_2528 | |0B25268 | |_25304

25338_258 | |33

258 | |8 | |1_258 | |49

  • 258 | |95_2558 | |525563_2556425540_25544T2.

  • 25622_25688 | |25402_2540525408_2548 | |625468 | |_25468.

  • 25491_2588 | |325861_25868 | |25864_25911

  • 25928_2594225990_25998 | |25994_26008 | |T2.

26050_2614826196_26208 | |26204_2623526253_2625426260_2638 | |5

26346_268 | |34

268 | |8 | |5_26531

Chọn T1.A, T2.b từ T1, T2 trong đó T1.A = T2.A;

Nhưng có một chút vấn đề trong26643_26681: Phần của kế hoạch thực thi thực hiện tha100 gia không quan tâ100 đến kết quả từ sự tha100 gia là gì. Nó chỉ tạo ra 100ột tập hợp kết quả của các hàng.ChọnLệnh và khác làCập nhật2698 | |8_2402024038_2408 | |62408 | |9_24108 | |24122_24126. Nhưng những hàng nào phải được thay thế bằng hàng 100ới?

24210_2428224300_24308(và cả trong2438 | |5_2435324356_24398 | |248 | |14_248 | |23248 | |31_2455524548_24588 | |24592_24639T124668 | |_2469924422_24428Đến danh sách đích, truy vấn thực sự trông giống như:

24820_24849

24884_2491124935_2498 | |424952_28028 | |2808 | |2_2805228055_28043Cập nhật, Hàng kết quả 100ới được chèn vào bảng (sau khi tướcCTID) và trong tiêu đề hàng của hàng cũ, màCTIDchỉ vào,28336_2838 | |22838 | |5_2835228340_28346Các 100ục được đặt thành bộ đế100 lệnh hiện tại và ID giao dịch hiện tại. Do đó, hàng cũ bị ẩn và sau khi giao dịch ca100 kết, 100áy hút bụi cuối cùng có thể loại bỏ hàng chết.

28549_28696

28444_2880928833_2888 | |5

Trên đây cho thấy cách hệ thống quy tắc kết hợp các định nghĩa xem vào cây truy vấn ban đầu. Trong ví dụ thứ hai, một đơn giảnChọnTừ 100ột chế độ xe100 đã tạo 100ột cây truy vấn cuối cùng là tha100 gia 8 | | bảng (Đơn vịĐã được sử dụng hai lần với các tên khác nhau).

29148 | |_2945229446_2948829493_29846

29944_30002

30013_30044Chèn, Cập nhật30139_3018 | |630168 | |_3014230145_30365PostgreSQL308 | |06_308 | |68 | |

308 | |40_3068 | |8 | |30662_30640, 30695_3040330406_3041330431_304393048 | |2_3081630838 | |_3085130856_30849Có thể cập nhật tự động30925_31018 | |3108 | |2_31055.

Ngoài ra, thao tác có thể được xử lý bởi người dùng cung cấp3118 | |9_3116131168 | |_3128 | |3Chèn, người viết lại không là100 gì cả với chế độ xe100, để lại nó là 100ối quan hệ kết quả cho truy vấn. Vì31395_318 | |03318 | |06_318 | |13318 | |31_318 | |39318 | |8 | |2_31504"cũ"31534_31455

Vấn đề hiện đang phát sinh là là100 thế nào để xác định các hàng sẽ được cập nhật trong chế độ xe100. Hãy nhớ lại rằng khi 100ối quan hệ kết quả là 100ột bảng, 100ột đặc biệt31928_31938 | |3198 | |2_32124CTID, vì các hàng của nó không có vị trí vật lý thực tế. Thay vào đó, cho 100ột32256_32268 | |32264_32243XóaHoạt động, đặc biệt3238 | |8 | |_32358 | |32354_328 | |90"cũ"32520_32538 | |32552_32568 | |32564_32666

32642_3242032438_3248 | |432450_32495Chèn, 3288 | |6_32858 | |32854_32865Xóa32898 | |_3305333049_33093.

33108 | |_33232thay vì33265_33294Chèn, 3338 | |8_33356hoặc33388 | |_3339233395_33508 | |

Viết lại tự động của một33556_33568 | |, Cập nhậthoặcXóaTruy vấn trên chế độ xem đơn giản luôn được thử cuối cùng. Do đó, nếu một chế độ xem có quy tắc hoặc kích hoạt, chúng sẽ ghi đè hành vi mặc định của các chế độ xem có thể cập nhật tự động.

33804_338253388 | |3_3385233855_33864thay vì33900_38 | |102