kèo bóng đá hôm nay và ngày mai được xác định trênkèo bóng đá hôm nay và ngày mai, Cập nhậtvàXóakhác biệt đáng kể so với chế độ xem Các kèo bóng đá hôm nay và ngày mai được mô tả trong phần trước. Đầu tiên, của họTạo kèo bóng đá hôm nay và ngày mailệnh cho phép thêm:
Họ được phép không có hành động.
Họ có thể có nhiều hành động.
Chúng có thểThay kèo bóng đá hôm nay và ngày maio đóhoặccũng(mặc định).
Pseudorelationsmớivàcũtrở nên hữu ích.
Họ có thể có trình độ kèo bóng đá hôm nay và ngày mai.
Thứ hai, họ không sửa đổi cây truy vấn tại chỗ. Thay kèo bóng đá hôm nay và ngày maio đó họ Tạo không hoặc nhiều cây truy vấn mới và có thể vứt bỏ bản gốc một.
Giữ cú pháp:
Tạo [hoặc thay thế] kèo bóng đá hôm nay và ngày maitênnhư trênSự kiệnđếnBảng[WHEREđiều kiện] Làm [cũng | Thay kèo bóng đá hôm nay và ngày maio đó] không có gì |lệnh| (lệnh;lệnh...)
Trong tâm trí. Trong phần sau,kèo bóng đá hôm nay và ngày mai cập nhậtcó nghĩa là các kèo bóng đá hôm nay và ngày mai được xác định trênkèo bóng đá hôm nay và ngày mai, Cập nhậthoặcXóa.
Cập nhật kèo bóng đá hôm nay và ngày mai được áp dụng bởi hệ thống kèo bóng đá hôm nay và ngày mai 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 trong12398_12411lệnh. Đối với các kèo bóng đá hôm nay và ngày mai cập nhật, hệ thống kèo bóng đá hôm nay và ngày mai tạo ra một danh sách truy vấn cây. 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 kèo bóng đá hôm nay và ngày mai với một hành động. Cái này kèo bóng đá hôm nay và ngày mai có thể có trình độ hoặc không và nó có thể làThay kèo bóng đá hôm nay và ngày maio đóhoặcNgoài ra(The mặc định).
Trình độ kèo bóng đá hôm nay và ngày mai là gì? Đó là một hạn chế cho biết Khi các hành động của kèo bóng đá hôm nay và ngày mai 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ặccũ, 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 sản xuất các cây truy vấn sau cho một kèo bóng đá hôm nay và ngày mai một hành động.
Cây truy vấn từ hành động kèo bóng đá hôm nay và ngày mai với truy vấn ban đầu Trình độ của cây được thêm vào
Cây truy vấn từ hành động kèo bóng đá hôm nay và ngày mai với trình độ kèo bóng đá hôm nay và ngày mai và trình độ của cây truy vấn ban đầu được thêm vào
Cây truy vấn từ hành động kèo bóng đá hôm nay và ngày mai với trình độ kèo bóng đá hôm nay và ngày mai và trình độ của cây truy vấn ban đầu; Và truy vấn ban đầu cây có trình độ kèo bóng đá hôm nay và ngày mai phủ định được thêm
Cuối cùng, nếu kèo bóng đá hôm nay và ngày mai làcũng, The Cây truy vấn gốc không thay đổi được thêm kèo bóng đá hôm nay và ngày maio danh sách. Kể từ chỉ đạt tiêu chuẩnThay kèo bóng đá hôm nay và ngày maio đókèo bóng đá hôm nay và ngày mai đã thêm Cây truy vấn ban đầu, chúng tôi kết thúc với một hoặc hai truy vấn đầu ra cây cho một kèo bóng đá hôm nay và ngày mai với một hành động.
chotrên kèo bóng đá hôm nay và ngày mai14299_14350Thay kèo bóng đá hôm nay và ngày maio đó) được thực hiện Trước khi có bất kỳ hành động được thêm vào theo kèo bóng đá hôm nay và ngày mai. Điều này cho phép các hành động xem Các hàng chèn (các). Nếu không cótrên cập nhậtvàtrên xóakèo bóng đá hôm nay và ngày mai, truy vấn ban đầu là thực hiện sau các hành động được thêm vào theo kèo bóng đá hôm nay và ngày mai. Điều này đảm bảo rằng Các hành động có thể thấy các hàng được cập nhật hoặc bị xóa; nếu không thì, Các hành động có thể không làm gì vì họ không tìm thấy hàng nào phù hợp trình độ của họ.
14810_15231
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ới15438_15445cũ, 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 được tìm thấy, Biểu thức của mục đó thay thế tham chiếu. Nếu không thì,mớicó nghĩa giống nhưcũ(cho mộtCập nhật) Hoặc là được thay thế bằng một giá trị null (cho mộtkèo bóng đá hôm nay và ngày mai). Bất kỳ tham chiếu nào đếncũđược thay thế bằng a tham chiếu đến mục nhập bảng phạm vi là mối quan hệ kết quả.
Sau khi hệ thống hoàn thành áp dụng các kèo bóng đá hôm nay và ngày mai cập nhật, nó áp dụng xem xem Các kèo bóng đá hôm nay và ngày mai cho (các) cây truy vấn được sản xuất. Lượt xem không thể chèn cập nhật mới các hành động để không cần áp dụng các kèo bóng đá hôm nay và ngày mai cập nhật cho đầu ra của Xem lại viết lại.
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 bảng nhật ký và một kèo bóng đá hôm nay và ngày mai có điều kiện ghi một mục 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 kèo bóng đá hôm nay và ngày mai 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 đó làm:
Cập nhật Shoelace_Data SET SL_AVAIL = 6 WHER
Và chúng tôi nhìn kèo bóng đá hôm nay và ngày maio 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à tiếp theo. 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 kèo bóng đá hôm nay và ngày mailog_shoelaceĐó làtrên cập nhậtVới trình độ kèo bóng đá hôm nay và ngày mai sự biểu lộ:
new.sl_avail < old.sl_avail
và hành động:
Chèn kèo bóng đá hôm nay và ngày maio giá trị Shoelace_log ( new.sl_name, new.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 thường không thể viếtkèo bóng đá hôm nay và ngày mai ... giá trị ... từ. Thetừmệnh đề ở đây chỉ là để chỉ ra rằng có Các mục nhập bảng trong Cây truy vấn chomớivàcũ. Đây là cần thiết để chúng có thể được tham chiếu bởi các biến trongkèo bóng đá hôm nay và ngày maiCây truy vấn của lệnh.)
kèo bóng đá hôm nay và ngày mai là đủ điều kiệncũng18934_19163
Chèn kèo bóng đá hôm nay và ngày maio giá trị Shoelace_log ( new.sl_name, new.sl_avail, current_user, current_timestamp) Từ shoelace_data mới, shoelace_data cũ,shoelace_data shoelace_data;
Trong bước 2, trình độ kèo bóng đá hôm nay và ngày mai được thêm vào nó, vì vậy kết quả Đặt bị giới hạn ở các hàng trong đóSL_AVAILThay đổi:
Chèn kèo bóng đá hôm nay và ngày maio giá trị Shoelace_log ( new.sl_name, new.sl_avail, current_user, current_timestamp) Từ shoelace_data mới, shoelace_data cũ, Shoelace_data Shoelace_DataWHERE new.sl_avail < cũ.SL_AVAIL;
(cái này trông thậm chí còn xa lạ, vìkèo bóng đá hôm nay và ngày mai ... Giá trịkhông cóở đâumệnh đề Hoặc, nhưng người lập kế hoạch và thực thi sẽ không gặp khó khăn gì với Nó. Họ cần hỗ trợ cùng một chức năng này chokèo bóng đá hôm nay và ngày mai ... Chọn.)
Trong bước 3, trình độ của cây truy vấn ban đầu được thêm kèo bóng đá hôm nay và ngày maio, Hạn chế kết quả được đặt xa hơn chỉ các hàng sẽ có Đã bị chạm kèo bóng đá hôm nay và ngày maio truy vấn ban đầu:
20358_20594và shoelace_data.sl_name = 'SL7';
Bước 4 thay thế các tham chiếu đếnmới20718_20841
Chèn kèo bóng đá hôm nay và ngày maio giá trị Shoelace_log (shoelace_data.sl_name, 620986_211186< cũ.SL_AVAIL Và shoelace_data.sl_name = 'SL7';
Bước 5 thay đổicũTài liệu tham khảo kèo bóng đá hôm nay và ngày maio Kết quả Tài liệu tham khảo:
Chèn kèo bóng đá hôm nay và ngày maio 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ì kèo bóng đá hôm nay và ngày mai làcũng21689_21840
Chèn kèo bóng đá hôm nay và ngày maio 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ì kèo bóng đá hôm nay và ngày mai 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 đó, truy vấn ban đầu 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. Do đó, lệnh bổ sung được tạo bởi kèo bóng đá hôm nay và ngày mai là:
Chèn kèo bóng đá hôm nay và ngày maio 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, SL3vàSL4). NhưngSL3đã cóSL_AVAIL = 0. Trong trường hợp này, Trình độ truy vấn ban đầu là khác nhau và điều đó kết quả trong cây truy vấn bổ sung:
Chèn kèo bóng đá hôm nay và ngày maio 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 kèo bóng đá hôm nay và ngày mai. Cây truy vấn này chắc chắn sẽ chèn Ba mục nhật ký mới. Và điều đó hoàn toàn chính xác.
Ở đây chúng ta có thể thấy lý do tại sao điều quan trọng là cây truy vấn ban đầu được thực hiện cuối cùng. NếuCập nhậtĐã được được thực hiện trước, tất cả các hàng đã được đặt thành 0, Vì vậy, ghi nhật kýkèo bóng đá hôm nay và ngày maisẽ không tìm thấy bất kỳ hàng trong đó0 < shoelace_data.sl_avail.
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ạykèo bóng đá hôm nay và ngày mai, Cập nhậthoặcXóaTrên chúng là để những cây truy vấn đó bị vứt đi. Vì vậy, chúng tôi có thể tạo các kèo bóng đá hôm nay và ngày mai:
Tạo kèo bóng đá hôm nay và ngày mai giày_ins_protect như khi chèn vào giày Thay vào đó không có gì; Tạo kèo bóng đá hôm nay và ngày mai giày_upd_protect như trên cập nhật cho giày Thay vào đó không có gì; Tạo kèo bóng đá hôm nay và ngày mai giày_del_protect như đang xóa để giày Thay vào đó không có gì;
Nếu ai đó hiện đang cố gắng thực hiện bất kỳ hoạt động nào trong quan điểm này mối quan hệgiày, Hệ thống kèo bóng đá hôm nay và ngày mai sẽ áp dụng những kèo bóng đá hôm nay và ngày mai này. Vì các kèo bóng đá hôm nay và ngày mai không có hành động và làThay kèo bóng đá hôm nay và ngày maio đó, Danh sách kết quả của các cây truy vấn sẽ trống rỗng và toàn bộ truy vấn sẽ trở nên không có gì vì có không còn gì để được tối ưu hóa hoặc thực thi sau khi hệ thống kèo bóng đá hôm nay và ngày mai là Xong với nó.
Một cách tinh vi hơn để sử dụng hệ thống kèo bóng đá hôm nay và ngày mai là tạo Các kèo bóng đá hôm nay và ngày mai 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 các kèo bóng đá hôm nay và ngày mai sau:
25812_26471
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 kèo bóng đá hôm nay và ngày mai bao gồmTrở vềCác mệnh đề tính toán các hàng xem. Cái này thường khá tầm thường cho các quan điểm trên một bảng, nhưng đó là một bit tẻ nhạt cho các chế độ xem tham gia nhưShoelace. Một ví dụ cho trường hợp kèo bóng đá hôm nay và ngày mai là:
Tạo kèo bóng đá hôm nay và ngày mai shoelace_ins như khi chèn vào dây giày Làm thay thế Chèn vào giá trị Shoelace_Data ( New.sl_name, New.sl_avail, New.sl_color, New.sl_len, Mới.sl_unit ) Trở lại Shoelace_data.*, (Chọn Shoelace_Data.SL_LEN * U.UN_FACT Từ đơn vị u nơi shoelace_data.sl_unit = U.un_name);
Lưu ý rằng kèo bóng đá hôm nay và ngày mai này hỗ trợ cảkèo bóng đá hôm nay và ngày maivàkèo bóng đá hôm nay và ngày mai trả vềTruy vấn trên chế độ xem - TheTrở vềmệnh đề chỉ đơn giản là bị bỏ qua chokèo bóng đá hôm nay và ngày mai.
Bây giờ hãy giả sử rằng thỉnh thoảng, một gói dây giày đến Các 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 thời gian. Thay kèo bóng đá hôm nay và ngày maio đó chúng tôi thiết lập hai bảng nhỏ: một nơi bạn có thể chèn Các mục từ danh sách bộ phận, và một với một mẹo đặc biệt. Các Các lệnh tạo cho những điều này là:
27913_28243
28251_28280Shoelace_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:
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 SL3 | 0 | Đen | 35 | inch | 88.9 SL4 | 8 | Đen | 40 | inch | 101.6 SL8 | 1 | Màu nâu | 40 | inch | 101.6 SL5 | 4 | Màu nâu | 1 | m | 100 SL6 | 0 | Màu nâu | 0,9 | m | 90 (8 hàng)
Bây giờ di chuyển dây giày đã đến trong:
Chèn kèo bóng đá hôm nay và ngày maio Shoelace_ok Chọn * từ Shoelace_arrive;
và kiểm tra kết quả:
29480_30588
Đó là một chặng đường dài từ mộtkèo bóng đá hôm nay và ngày mai ... LỰA CHỌNvới những kết quả này. Và mô tả của cây truy vấn Chuyển đổi 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 kèo bóng đá hôm nay và ngày maio Shoelace_ok Chọn shoelace_arrive.arr_name, shoelace_arrive.arr_quant Từ shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok;
Bây giờ là kèo bóng đá hôm nay và ngày mai đầu tiênShoelace_ok_insIS Áp dụng và biến điều này thành:
Cập nhật Shoelace Đặt SL_AVAIL = Shoelace.SL_AVAIL + SHOELACE_ARRIVE.ARR_QUANT Từ shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok, Shoelace_ok cũ, Shoelace_ok Mới, dây giày WHERE Shoelace.SL_NAME = shoelace_arrive.arr_name;
và ném đi bản gốckèo bóng đá hôm nay và ngày maitrênShoelace_ok. Truy vấn viết lại này là được chuyển đến hệ thống kèo bóng đá hôm nay và ngày mai một lần nữa và kèo bóng đá hôm nay và ngày mai đượ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, dây giày, dây giày cũ, 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 kèo bóng đá hôm nay và ngày maio đókèo bóng đá hôm nay và ngày mai 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 xemShoelace. Nhưng hệ thống kèo bóng đá hôm nay và ngày mai không Kết thúc với bước này, vì vậy nó tiếp tục và áp dụng_returnkèo bóng đá hôm nay và ngày mai trên đó và chúng ta nhận được:
32532_33071
Cuối cùng, kèo bóng đá hôm nay và ngày mailog_shoelaceNhận Ứng dụng, sản xuất cây truy vấn thêm:
Chèn kèo bóng đá hôm nay và ngày maio Shoelace_log Chọn S.SL_NAME, s.sl_avail + shoelace_arrive.arr_quant, current_user, current_timestamp Từ shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok, Shoelace_ok cũ, Shoelace_ok Mới, dây giày, dây giày cũ, Shoelace Mới, Shoelace_Data Shoelace_Data, dây giày cũ, dây giày mới, shoelace_data s, đơn vị u, shoelace_data cũ, shoelace_data mới Shoelace_log Shoelace_log 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;
Sau đó, hệ thống kèo bóng đá hôm nay và ngày mai hết kèo bóng đá hôm nay và ngày mai 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 với TheSQLCâu lệnh:
Chèn kèo bóng đá hôm nay và ngày maio 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 mối quan hệ được chèn kèo bóng đá hôm nay và ngày maio một lần 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 kèo bóng đá hôm nay và ngày maio hai Truy vấn, hóa raShoelace_dataMối quan hệ xuất hiện hai lần trong phạm vi Bảng nơi nó chắc chắn có thể được giảm xuống còn một. Người lập kế hoạch làm không xử lý nó và do đó, kế hoạch thực thi cho đầu ra của các hệ thống kèo bóng đá hôm nay và ngày mai củakèo bóng đá hôm nay và ngày maisẽ 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 A
35721_35893
tạo ra chính xác các mục tương tự trong bảng nhật ký. Như vậy, hệ thống kèo bóng đá hôm nay và ngày mai 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à Việc 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 điều đó 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ủaPostgreSQLHệ thống kèo bóng đá hôm nay và ngày mai và sức mạnh của nó. Nói bạn Thêm một số dây giày với màu sắc phi thường vào cơ sở dữ liệu của bạn:
36463_36606
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. Các Xem cho điều này là:
Tạo xem shoelace_mismatch là 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ó để các 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 chút khó hơn choPOSTGRESQL, Chúng tôi không Xóa nó trực tiếp. Thay kèo bóng đá hôm nay và ngày maio đó chúng tôi tạo thêm một chế độ 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à:
37900_38618
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 bản thân họ có trình độ quản trị con có chứa một cái nhìn và nơi các cột xem được tính toán được sử dụng, được viết lại thành một Cây truy vấn đơn để xóa dữ liệu được yêu cầu khỏi một bàn.
Có lẽ chỉ có một kèo bóng đá hôm nay và ngày maii tình huống trong thế giới thực Trường hợp 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 rằng nó hoạt động.