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 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
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ế.

36.3. tỷ lệ kèo bóng đá 88 trêntỷ lệ kèo bóng đá 88, Cập nhậtXóa

tỷ lệ kèo bóng đá 88 được xác định trêntỷ lệ kèo bóng đá 88, Cập nhậtXóakhác biệt đáng kể so với chế độ xem Các tỷ lệ kèo bóng đá 88 được mô tả trong phần trước. Đầu tiên, của họTạo tỷ lệ kèo bóng đá 88Lệnh cho phép nhiều hơn:

  • Họ được phép không có hành động.

  • Họ có thể có nhiều hành động.

  • Chúng có thể làThay tỷ lệ kèo bóng đá 88o đóhoặccũng(mặc định).

  • Pseudorelationsnewtrở nên hữu ích.

  • Họ có thể có trình độ tỷ lệ kèo bóng đá 88.

Thứ hai, họ không sửa đổi cây truy vấn tại chỗ. Thay vì Họ tạo ra không hoặc nhiều cây truy vấn mới và có thể vứt bỏ bản gốc.

36.3.1. Làm sao Cập nhật tỷ lệ kèo bóng đá 88 hoạt động

Giữ cú pháp:

Tạo [hoặc thay thế] tỷ lệ kèo bóng đá 88tênnhư trênSự kiệnđếnBảng[WHEREđiều kiện]
    Làm [cũng | Thay tỷ lệ kèo bóng đá 88o đó] không có gì |lệnh| (lệnh;lệnh...)

Trong tâm trí. Trong phần sau,Cập nhật tỷ lệ kèo bóng đá 88có nghĩa là các tỷ lệ kèo bóng đá 88 được xác định trêntỷ lệ kèo bóng đá 88, Cập nhậthoặcXóa.

Cập nhật tỷ lệ kèo bóng đá 88 được áp dụng bởi hệ thống tỷ lệ kèo bóng đá 88 khi kết quả mối quan hệ và loại lệnh của cây truy vấn bằng Đối tượng và sự kiện được đưa ra trongTạo LUẬT LỆLệnh. Đối với các tỷ lệ kèo bóng đá 88 cập nhật, hệ thống tỷ lệ kèo bóng đá 88 tạo ra một Danh sách các cây truy vấn. Ban đầu danh sách cây truy vấn trống rỗng. Có thể không có (Không có gìTừ khóa), một hoặc nhiều hành động. Để đơn giản hóa, chúng tôi sẽ xem xét một tỷ lệ kèo bóng đá 88 với một hành động. tỷ lệ kèo bóng đá 88 này có thể có trình độ hoặc không và nó có thể làThay tỷ lệ kèo bóng đá 88o đóhoặccũng(mặc định).

Trình độ tỷ lệ kèo bóng đá 88 là gì? Đó là một hạn chế cho biết Khi các hành động của tỷ lệ kèo bóng đá 88 nên được thực hiện và khi không. Cái này Trình độ chuyên môn chỉ có thể tham khảo các giả thuyếtmớivà/hoặc, mà về cơ bản đại diện cho mối quan hệ được đưa ra như là đối tượng (nhưng với một ý nghĩa đặc biệt).

Vì vậy, chúng tôi có ba trường hợp tạo ra truy vấn sau cây cho tỷ lệ kèo bóng đá 88 một hành động.

Không có trình độ, vớiNgoài rahoặcThay tỷ lệ kèo bóng đá 88o đó

Cây truy vấn từ hành động tỷ lệ kèo bóng đá 88 với bản gốc Truy vấn của Tree Treument được thêm vào

Trình độ chuyên môn đã cho vàcũng

Cây truy vấn từ hành động tỷ lệ kèo bóng đá 88 với tỷ lệ kèo bóng đá 88 Trình độ chuyên môn và trình độ của cây truy vấn ban đầu Đã thêm

Trình độ chuyên môn đã cho vàThay tỷ lệ kèo bóng đá 88o đó

Cây truy vấn từ hành động tỷ lệ kèo bóng đá 88 với tỷ lệ kèo bóng đá 88 Trình độ chuyên môn và cây truy vấn ban đầu trình độ chuyên môn; và cây truy vấn ban đầu với Đã thêm trình độ tỷ lệ kèo bóng đá 88 bị phủ nhận

Cuối cùng, nếu tỷ lệ kèo bóng đá 88 làcũng, The Cây truy vấn gốc không thay đổi được thêm tỷ lệ kèo bóng đá 88o danh sách. Kể từ chỉ đạt tiêu chuẩnThay tỷ lệ kèo bóng đá 88o đótỷ lệ kèo bóng đá 88 đã thêm Cây truy vấn ban đầu, chúng tôi kết thúc với một hoặc hai Cây truy vấn đầu ra cho một tỷ lệ kèo bóng đá 88 với một hành động.

chotrên tỷ lệ kèo bóng đá 88tỷ lệ kèo bóng đá 88, bản gốc truy vấn (nếu không bị đàn áp bởiThay tỷ lệ kèo bóng đá 88o đó) được thực hiện trước khi có bất kỳ hành động được thêm vào các tỷ lệ kèo bóng đá 88. Điều này cho phép hành động để xem (các) hàng được chèn. Nếu không cótrên cập nhậtKhi xóatỷ lệ kèo bóng đá 88, truy vấn ban đầu được thực hiện sau khi các hành động được thêm vào bởi tỷ lệ kèo bóng đá 88. Điều này đảm bảo rằng các hành động có thể thấy hoặc các hàng bị xóa; Nếu không, các hành động có thể không làm gì cả bởi vì họ không tìm thấy hàng nào phù hợp với trình độ của họ.

15538_15983

Các cây truy vấn được tìm thấy trong các hành động củaPG_REWRITEDanh mục hệ thống chỉ là mẫu. Vì chúng có thể tham chiếu các mục nhập bảng phạm vi chomới, một số Thay thế phải được thực hiện trước khi chúng có thể được sử dụng. Cho bất kỳ Tham khảomới, Danh sách mục tiêu của Truy vấn ban đầu được tìm kiếm cho một mục tương ứng. Nếu như Tìm thấy, biểu thức của mục đó thay thế tài liệu tham khảo. Nếu không thì,mớicó nghĩa giống như(cho mộtCập nhật) hoặc được thay thế bằng giá trị null (cho mộttỷ lệ kèo bóng đá 88). Bất kỳ tham chiếu nào đếnđược thay thế bằng tham chiếu đến mục nhập bảng là mối quan hệ kết quả.

Sau khi hệ thống hoàn thành áp dụng các tỷ lệ kèo bóng đá 88 cập nhật, nó áp dụng Xem các tỷ lệ kèo bóng đá 88 cho (các) cây truy vấn được sản xuất. Quan điểm không thể chèn Các hành động cập nhật mới để không cần áp dụng các tỷ lệ kèo bóng đá 88 cập nhật cho đầu ra của chế độ xem viết lại.

36.3.1.1. tỷ lệ kèo bóng đá 88 đầu tiên từng bước

Nói rằng chúng tôi muốn theo dõi các thay đổi đối vớiSL_AVAILCột trongShoelace_dataMối quan hệ. Vì vậy, chúng tôi thiết lập một nhật ký bảng và một tỷ lệ kèo bóng đá 88 có điều kiện ghi một mục nhập nhật ký khi MỘTCập nhậtđược thực hiện trênShoelace_data.

Tạo bảng Shoelace_log (
    Text SL_NAME, - Shoelace đã thay đổi
    Số nguyên SL_AVAIL, - Giá trị mới có sẵn
    log_who văn bản, - ai đã làm nó
    log_when dấu thời gian - khi
);

Tạo tỷ lệ kèo bóng đá 88 log_shoelace như trên bản cập nhật lên shoelace_data
    WHERE new.sl_avail < cũ.SL_AVAIL
    Lắp vào các giá trị Shoelace_log (
                                    New.sl_name,
                                    New.sl_avail,
                                    current_user,
                                    current_timestamp
                                );

Bây giờ ai đó không:

Cập nhật Shoelace_Data SET SL_AVAIL = 6 WHER

Và chúng tôi nhìn tỷ lệ kèo bóng đá 88o bảng nhật ký:

Chọn * từ Shoelace_log;

 SL_NAME | SL_AVAIL | log_who | log_when                        
---------+----------+---------+------------------------------------------
 SL7 |        6 | Al | Tue ngày 20 tháng 10 16:14:45 1998 đã gặp DST
(1 hàng)

Đó là những gì chúng tôi mong đợi. Điều gì đã xảy ra trong nền là những điều sau đây. Trình phân tích cú pháp đã tạo cây truy vấn:

Cập nhật Shoelace_Data SET SL_AVAIL = 6
  Từ Shoelace_Data Shoelace_Data
 WHERE SHOELACE_DATA.SL_NAME = 'SL7';

Có một tỷ lệ kèo bóng đá 88log_shoelaceĐiều đó làKhi cập nhậtvới tỷ lệ kèo bóng đá 88 Biểu thức đủ điều kiện:

new.sl_avail < cũ.SL_AVAIL

và hành động:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (
       *MỚI*.SL_NAME,*MỚI*.SL_AVAIL,
       current_user, current_timestamp)
  Từ shoelace_data *mới *, shoelace_data *cũ *;

(Điều này có vẻ hơi lạ vì bạn không thể bình thường viếttỷ lệ kèo bóng đá 88 ... giá trị ... từ. Thetừmệnh đề ở đây chỉ là để chỉ ra rằng có các mục trong bảng phạm vi trong cây truy vấn vì*mới**cũ*. Những điều này là cần thiết để chúng có thể được tham chiếu bởi các biến trongtỷ lệ kèo bóng đá 88Cây truy vấn của lệnh.)

tỷ lệ kèo bóng đá 88 là đủ điều kiệncũngtỷ lệ kèo bóng đá 88, vì vậy hệ thống tỷ lệ kèo bóng đá 88 phải trả về hai cây truy vấn: The Hành động tỷ lệ kèo bóng đá 88 sửa đổi và cây truy vấn ban đầu. Trong bước 1, Bảng phạm vi của truy vấn ban đầu được tích hợp vào cây truy vấn hành động của tỷ lệ kèo bóng đá 88. Kết quả này trong:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (
       *MỚI*.SL_NAME,*MỚI*.SL_AVAIL,
       current_user, current_timestamp)
  Từ shoelace_data *mới *, shoelace_data *cũ *,shoelace_data shoelace_data;

Trong bước 2, trình độ tỷ lệ kèo bóng đá 88 được thêm vào nó, vì vậy tập kết quả được giới hạn ở các hàng trong đó20640_20650Thay đổi:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (
       *MỚI*.SL_NAME,*MỚI*.SL_AVAIL,
       current_user, current_timestamp)
  Từ shoelace_data *mới *, shoelace_data *cũ *,
       Shoelace_data Shoelace_DataTrong đó *mới *.sl_avail < *cũ *.sl_avail;

(cái này trông thậm chí còn lạ, vìtỷ lệ kèo bóng đá 88 ... Giá trịkhông cóWHERE21123_21271tỷ lệ kèo bóng đá 88 ... Chọn.)

21335_21513

Chèn tỷ lệ kèo bóng đá 88o các giá trị Shoelace_log (
       *MỚI*.SL_NAME,*MỚI*.SL_AVAIL,
       current_user, current_timestamp)
  Từ shoelace_data *mới *, shoelace_data *cũ *,
       Shoelace_data Shoelace_Data
 Trong đó *mới *.sl_avail < *cũ *.sl_availvà shoelace_data.sl_name = 'SL7';

Bước 4 thay thế các tài liệu tham khảo chomớibởi các mục nhập danh sách mục tiêu từ cây truy vấn ban đầu hoặc bởi các tham chiếu biến phù hợp từ kết quả mối quan hệ:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (shoelace_data.sl_name, 6,,
       current_user, current_timestamp)
  Từ shoelace_data *mới *, shoelace_data *cũ *,
       Shoelace_data Shoelace_Data
 Ở ĐÂU6< *cũ *.Sl_avail
   Và shoelace_data.sl_name = 'SL7';

Bước 5 thay đổiTài liệu tham khảo kết quả Tài liệu tham khảo quan hệ:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (
       shoelace_data.sl_name, 6,
       current_user, current_timestamp)
  Từ shoelace_data *mới *, shoelace_data *cũ *,
       Shoelace_data Shoelace_Data
 Trong đó 6 <shoelace_data.sl_availvà shoelace_data.sl_name = 'SL7';

Đó là nó. Vì tỷ lệ kèo bóng đá 88 làcũng, chúng tôi cũng xuất ra cây truy vấn ban đầu. Nói tóm lại, đầu ra từ hệ thống tỷ lệ kèo bóng đá 88 là danh sách hai Truy vấn cây tương ứng với các câu sau:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (
       shoelace_data.sl_name, 6,
       current_user, current_timestamp)
  Từ Shoelace_data
 WHERE 6 < shoelace_data.sl_avail
   Và shoelace_data.sl_name = 'SL7';

Cập nhật Shoelace_Data SET SL_AVAIL = 6
 Trong đó sl_name = 'SL7';

Chúng được thực hiện theo thứ tự này và đó chính xác là những gì tỷ lệ kèo bóng đá 88 có nghĩa là phải làm.

Sự thay thế và trình độ bổ sung đảm bảo rằng, nếu truy vấn ban đầu sẽ là, giả sử:

Cập nhật Shoelace_Data SET SL_COLOR = 'XANH'
 Trong đó sl_name = 'SL7';

Không có mục nhập nào sẽ được viết. Trong trường hợp đó, bản gốc Truy cập cây không chứa mục nhập danh sách đích choSL_AVAIL, SOnew.sl_availsẽ được thay thế bởishoelace_data.sl_avail. Vì vậy, thêm Lệnh được tạo bởi tỷ lệ kèo bóng đá 88 là:

Chèn tỷ lệ kèo bóng đá 88o giá trị Shoelace_log (
       shoelace_data.sl_name,shoelace_data.sl_avail,,
       current_user, current_timestamp)
  Từ Shoelace_data
 Ở ĐÂUshoelace_data.sl_avail< shoelace_data.sl_avail
   Và shoelace_data.sl_name = 'SL7';

Và trình độ đó sẽ không bao giờ đúng.

Nó cũng sẽ hoạt động nếu truy vấn ban đầu sửa đổi nhiều hàng. Vì vậy, nếu ai đó ban hành lệnh:

Cập nhật Shoelace_Data SET SL_AVAIL = 0
 Trong đó sl_color = 'đen';

Bốn hàng trên thực tế được cập nhật (SL1, SL2, SL3SL4). NhưngSL3đã cósl_avail = 0. Trong trường hợp này, truy vấn ban đầu trình độ của cây là khác nhau và kết quả là Cây truy vấn bổ sung:

Chèn tỷ lệ kèo bóng đá 88o Shoelace_log
Chọn Shoelace_Data.SL_NAME, 0,
       current_user, current_timestamp
  Từ Shoelace_data
 WHERE 0 < Shoelace_data.SL_AVAIL
   VÀshoelace_data.sl_color = 'đen';

được tạo bởi tỷ lệ kèo bóng đá 88. Cây truy vấn này chắc chắn sẽ Chèn ba mục nhật ký mới. Và đó là hoàn toàn Chính xác.

25582_25680Cập nhậtđã được thực hiện trước, tất cả các hàng đã được đặt thành 0, vì vậy việc đăng nhậptỷ lệ kèo bóng đá 88sẽ không tìm thấy bất kỳ hàng nào trong đó0 < shoelace_data.sl_avail.

36.3.2. Hợp tác với Chế độ xem

Một cách đơn giản để bảo vệ quan hệ xem khỏi các quan hệ được đề cập khả năng ai đó có thể cố gắng chạytỷ lệ kèo bóng đá 88, Cập nhậthoặcXóaTrên đó là để cho những truy vấn đó Cây bị vứt đi. Vì vậy, chúng tôi có thể tạo các tỷ lệ kèo bóng đá 88:

26503_26728

Nếu ai đó hiện đang cố gắng thực hiện bất kỳ hoạt động nào trong số này trên Xem quan hệgiày, Hệ thống tỷ lệ kèo bóng đá 88 sẽ áp dụng các tỷ lệ kèo bóng đá 88 này. Vì các tỷ lệ kèo bóng đá 88 không có hành động và làThay tỷ lệ kèo bóng đá 88o đó26968_27168

Một cách tinh vi hơn để sử dụng hệ thống tỷ lệ kèo bóng đá 88 là tạo Các tỷ lệ kèo bóng đá 88 viết lại cây truy vấn thành một cái đúng Hoạt động trên các bảng thực. Để làm điều đó trênShoelaceXem, chúng tôi tạo phần sau tỷ lệ kèo bóng đá 88:

27475_28135

Nếu bạn muốn hỗ trợTrở vềTruy vấn trên chế độ xem, bạn cần thực hiện các tỷ lệ kèo bóng đá 88 bao gồmTrở vềmệnh đề tính toán Xem hàng. Điều này thường khá tầm thường cho các quan điểm trên một bảng, nhưng nó hơi tẻ nhạt cho các chế độ xem tham gia nhưShoelace. Một ví dụ cho trường hợp tỷ lệ kèo bóng đá 88 là:

28566_28959

Lưu ý rằng tỷ lệ kèo bóng đá 88 này hỗ trợ cảtỷ lệ kèo bóng đá 88tỷ lệ kèo bóng đá 88 Trở vềTruy vấn trên chế độ xem - TheTrở vềmệnh đề chỉ đơn giản là bỏ qua chotỷ lệ kèo bóng đá 88.

Bây giờ hãy giả sử rằng thỉnh thoảng, một gói dây giày đến tại cửa hàng và một danh sách các bộ phận lớn cùng với nó. Nhưng bạn không muốn cập nhật thủ côngShoelaceXem mỗi lần. Thay tỷ lệ kèo bóng đá 88o đó chúng tôi thiết lập hai bảng nhỏ: một trong đó Bạn có thể chèn các mục từ danh sách bộ phận và một mục với Thủ thuật đặc biệt. Các lệnh tạo cho chúng là:

Tạo bảng Shoelace_arrive (
    văn bản arr_name,
    ARR_QUANT Số nguyên
);

Tạo bảng Shoelace_ok (
    văn bản ok_name,
    OK_Quant Integer
);

Tạo tỷ lệ kèo bóng đá 88 shoelace_ok_ins như khi chèn vào shoelace_ok
    Làm thay thế
    Cập nhật Shoelace
       Đặt SL_AVAIL = SL_AVAIL + MỚI.OK_QUANT
     Trong đó sl_name = new.ok_name;

Bây giờ bạn có thể điền tỷ lệ kèo bóng đá 88o bảngshoelace_arriveVới dữ liệu từ các bộ phận danh sách:

Chọn * từ Shoelace_arrive;

 ARR_NAME | ARR_QUANT
----------+-----------
 SL3 |        10
 SL6 |        20
 SL8 |        20
(3 hàng)

Hãy xem nhanh dữ liệu hiện tại:

30393_31061

Bây giờ di chuyển dây giày đã đến trong:

31145_31203

và kiểm tra kết quả:

31275_32384

Đó là một chặng đường dài từ mộttỷ lệ kèo bóng đá 88 ... LỰA CHỌNvới những kết quả này. Và mô tả về Chuyển đổi cây truy vấn sẽ là lần cuối cùng trong chương này. Đầu tiên, có đầu ra của trình phân tích cú pháp:

Chèn tỷ lệ kèo bóng đá 88o Shoelace_ok
Chọn shoelace_arrive.arr_name, shoelace_arrive.arr_quant
  Từ shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok;

32823_32844Shoelace_ok_insđược áp dụng và biến điều này thành:

32955_33225

và ném đi bản gốctỷ lệ kèo bóng đá 88trênShoelace_ok. Truy vấn viết lại này được chuyển đến hệ thống tỷ lệ kèo bóng đá 88 một lần nữa và tỷ lệ kèo bóng đá 88 được áp dụng thứ haiShoelace_updSản xuất:

Cập nhật shoelace_data
   Đặt SL_NAME = Shoelace.SL_NAME,
       sl_avail = shoelace.sl_avail + shoelace_arrive.arr_quant,
       sl_color = shoelace.sl_color,
       sl_len = shoelace.sl_len,
       sl_unit = shoelace.sl_unit
  Từ shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok,
       shoelace_ok *cũ *, shoelace_ok *mới *,
       Shoelace Shoelace, Shoelace *Old *,
       Shoelace *Mới *, Shoelace_Data Shoelace_Data
 WHERE Shoelace.SL_name = shoelace_arrive.arr_name
   Và shoelace_data.sl_name = shoelace.sl_name;

Một lần nữa đó làThay tỷ lệ kèo bóng đá 88o đótỷ lệ kèo bóng đá 88 và Cây truy vấn trước đó bị vứt bỏ. Lưu ý rằng truy vấn này vẫn sử dụng Chế độ xemShoelace. Nhưng hệ thống tỷ lệ kèo bóng đá 88 chưa kết thúc với bước này, vì vậy nó tiếp tục và áp dụng_returntỷ lệ kèo bóng đá 88 trên đó và chúng ta nhận được:

34425_34978

Cuối cùng, tỷ lệ kèo bóng đá 88log_shoelaceNhận Ứng dụng, sản xuất cây truy vấn thêm:

35133_35782

Sau đó, hệ thống tỷ lệ kèo bóng đá 88 hết tỷ lệ kèo bóng đá 88 và trả về cây truy vấn được tạo.

Vì vậy, chúng tôi kết thúc với hai cây truy vấn cuối cùng tương đương đếnSQLcâu lệnh:

Chèn tỷ lệ kèo bóng đá 88o Shoelace_log
Chọn S.SL_NAME,
       s.sl_avail + shoelace_arrive.arr_quant,
       current_user,
       current_timestamp
  Từ shoelace_arrive shoelace_arrive, shoelace_data shoelace_data,
       Shoelace_data s
 WHERE S.SL_NAME = shoelace_arrive.arr_name
   Và shoelace_data.sl_name = s.sl_name
   Và S.SL_AVAIL + SHOELACE_ARRIVE.ARR_QUANT < S.SL_AVAIL;

Cập nhật shoelace_data
   Đặt sl_avail = shoelace_data.sl_avail + shoelace_arrive.arr_quant
  Từ shoelace_arrive shoelace_arrive,
       shoelace_data shoelace_data,
       Shoelace_data s
 WHERE S.SL_NAME = shoelace_arrive.sl_name
   Và shoelace_data.sl_name = s.sl_name;

Kết quả là dữ liệu đến từ một quan hệ được tỷ lệ kèo bóng đá 88 thành một Cập nhật bản cập nhật thứ tư cộng với bản cập nhật cuối cùng trong một phần năm bị giảm thành hai truy vấn.

Có một chút chi tiết hơi xấu. Nhìn tỷ lệ kèo bóng đá 88o hai truy vấn, hóa ra làShoelace_dataMối quan hệ xuất hiện hai lần trong Bảng phạm vi nơi nó chắc chắn có thể được giảm xuống còn một. Các người lập kế hoạch không xử lý nó và vì vậy kế hoạch thực hiện cho Đầu ra hệ thống tỷ lệ kèo bóng đá 88 củatỷ lệ kèo bóng đá 88Will là

Vòng lặp lồng nhau
  - Hợp nhất tham gia
        - SEQ SCAN
              - Sắp xếp
                    - seq scan trên s
        - SEQ SCAN
              - Sắp xếp
                    - SEQ SCAN trên Shoelace_arrive
  - SEQ SCAN trên Shoelace_Data

Trong khi bỏ qua mục nhập bảng phạm vi bổ sung sẽ dẫn đến Một

Hợp nhất tham gia
  - SEQ SCAN
        - Sắp xếp
              - seq scan trên s
  - SEQ SCAN
        - Sắp xếp
              - SEQ SCAN trên shoelace_arrive

tạo ra chính xác các mục tương tự trong bảng nhật ký. Do đó, hệ thống tỷ lệ kèo bóng đá 88 gây ra một lần quét thêm trên bảngShoelace_dataĐiều đó hoàn toàn không cần thiết. Và quá trình quét dự phòng tương tự được thực hiện một lần nữa trongCập nhật. Nhưng đó là một công việc thực sự khó khăn để làm cho tất cả có thể.

Bây giờ chúng tôi thực hiện một cuộc biểu tình cuối cùng củaPostgreSQL38404_38512

Chèn tỷ lệ kèo bóng đá 88o các giá trị Shoelace ('SL9', 0, 'hồng', 35.0, 'inch', 0,0);
Chèn tỷ lệ kèo bóng đá 88o các giá trị Shoelace ('SL10', 1000, 'Magenta', 40.0, 'inch', 0.0);

Chúng tôi muốn xem để kiểm tra xemShoelaceMục nhập không phù hợp với bất kỳ màu giày nào. Chế độ xem cho điều này là:

Tạo xem shoelace_mismatch AS
    Chọn * Từ dây giày nơi không tồn tại
        (Chọn Shoename từ giày WHER

Đầu ra của nó là:

Chọn * từ Shoelace_mismatch;

 SL_NAME | SL_AVAIL | SL_COLOR | SL_LEN | SL_Unit | SL_LEN_CM
---------+----------+----------+--------+----------+-----------
 SL9 |        0 | Màu hồng |     35 | inch |      88.9
 SL10 |     1000 | Magenta |     40 | inch |     101.6

Bây giờ chúng tôi muốn thiết lập nó để không phù hợp với dây giày không phù hợp không có trong kho được xóa khỏi cơ sở dữ liệu. Để làm cho nó một khó hơn một chút choPOSTGRESQL,, Chúng tôi không xóa nó trực tiếp. Thay tỷ lệ kèo bóng đá 88o đó chúng tôi tạo thêm một xem:

Tạo xem shoelace_can_delete là
    Chọn * Từ Shoelace_Mismatch WHERE SL_AVAIL = 0;

và làm theo cách này:

Xóa khỏi dây giày nơi tồn tại
    (Chọn * Từ Shoelace_Can_Delete
             Trong đó sl_name = shoelace.sl_name);

Voilà:

Chọn * từ Shoelace;

 SL_NAME | SL_AVAIL | SL_COLOR | SL_LEN | SL_Unit | SL_LEN_CM
---------+----------+----------+--------+----------+-----------
 SL1 |        5 | Đen |     80 | cm |        80
 SL2 |        6 | Đen |    100 | cm |       100
 SL7 |        6 | Màu nâu |     60 | cm |        60
 SL4 |        8 | Đen |     40 | inch |     101.6
 SL3 |       10 | Đen |     35 | inch |      88.9
 SL8 |       21 | Màu nâu |     40 | inch |     101.6
 SL10 |     1000 | Magenta |     40 | inch |     101.6
 SL5 |        4 | Màu nâu |      1 | m |       100
 SL6 |       20 | Màu nâu |    0,9 | m |        90
(9 hàng)

AXóaVề chế độ xem, với một truy vấn con Trình độ chuyên môn trong tổng số sử dụng 4 chế độ xem làm tổ/tham gia, trong đó một trong số họ có trình độ chuyên môn phụ có chứa một Xem và nơi sử dụng các cột xem được tính toán, được viết lại tỷ lệ kèo bóng đá 88o một cây truy vấn duy nhất xóa dữ liệu được yêu cầu khỏi một bảng thật.

Có lẽ chỉ có một tỷ lệ kèo bóng đá 88i tình huống trong thực tế thế giới nơi một cấu trúc như vậy là cần thiết. Nhưng nó làm cho bạn cảm thấy thoải mái khi nó hoạt động.