Phiên bản được hỗ trợ:hiện tại(17) /16 / 15
Phiên bản phát triển:18 / Devel

31.3. Bộ lọc tỷ lệ kèo bóng đá#

Theo mặc định, tất cả dữ liệu từ tất cả các tỷ lệ kèo bóng đá được công bố sẽ được sao chép thành các thuê bao thích hợp. Dữ liệu được sao chép có thể được giảm bằng cách sử dụngBộ lọc tỷ lệ kèo bóng đá. Người dùng có thể chọn sử dụng các bộ lọc tỷ lệ kèo bóng đá cho lý do hành vi, bảo mật hoặc hiệu suất. Nếu một bảng được xuất bản đặt bộ lọc tỷ lệ kèo bóng đá, một tỷ lệ kèo bóng đá chỉ được sao chép nếu dữ liệu của nó thỏa mãn biểu thức bộ lọc tỷ lệ kèo bóng đá. Điều này cho phép một tập hợp các bảng được sao chép một phần. Bộ lọc tỷ lệ kèo bóng đá được xác định cho mỗi bảng. Sử dụng AWHEREmệnh đề sau tên bảng cho mỗi bảng được công bố yêu cầu dữ liệu được tỷ lệ kèo bóng đá ra. TheWHEREmệnh đề phải được đặt bởi dấu ngoặc đơn. Nhìn thấyTạo ấn phẩmĐể biết chi tiết.

31.3.1. Quy tắc bộ lọc tỷ lệ kèo bóng đá#

Bộ lọc tỷ lệ kèo bóng đá được áp dụngtrướcXuất bản các thay đổi. Nếu bộ lọc tỷ lệ kèo bóng đá đánh giá làSaiornullSau đó tỷ lệ kèo bóng đá không được nhân rộng. Theở đâuBiểu thức mệnh đề được đánh giá với cùng một vai trò được sử dụng cho kết nối sao chép (nghĩa là vai trò được chỉ định trongKết nốimệnh đề củaTạo đăng ký). Bộ lọc tỷ lệ kèo bóng đá không có tác dụng chocắt ngắnlệnh.

31.3.2. Hạn chế biểu thức#

TheWHEREmệnh đề chỉ cho phép các biểu thức đơn giản. Nó không thể chứa các chức năng, toán tử, loại và đối chiếu do người dùng xác định

Nếu một ấn phẩm xuất bảnCập nhậthoặcXóaHoạt động, bộ lọc tỷ lệ kèo bóng đáWHEREmệnh đề phải chỉ chứa các cột được bao phủ bởi danh tính bản sao (xemNhận dạng bản sao). Nếu một ấn phẩm chỉ xuất bảnChènHoạt động, Bộ lọc tỷ lệ kèo bóng đáWHEREmệnh đề có thể sử dụng bất kỳ cột nào.

31.3.3. Cập nhật các biến đổi#

bất cứ khi nàoCập nhậtđược xử lý, biểu thức bộ lọc tỷ lệ kèo bóng đá được đánh giá cho cả tỷ lệ kèo bóng đá cũ và tỷ lệ kèo bóng đá mới (nghĩa là sử dụng dữ liệu trước và sau khi cập nhật). Nếu cả hai đánh giá làTRUE, nó sao chépCập nhậtThay đổi. Nếu cả hai đánh giá làSai, nó không sao chép thay đổi. Nếu chỉ một trong các tỷ lệ kèo bóng đá cũ/mới phù hợp với biểu thức bộ lọc tỷ lệ kèo bóng đá,Cập nhậtđược chuyển đổi thànhChènhoặcXóa, để tránh mọi sự không nhất quán về dữ liệu. tỷ lệ kèo bóng đá trên thuê bao sẽ phản ánh những gì được xác định bởi biểu thức bộ lọc tỷ lệ kèo bóng đá trên nhà xuất bản.

Nếu tỷ lệ kèo bóng đá cũ thỏa mãn biểu thức bộ lọc tỷ lệ kèo bóng đá (nó được gửi đến thuê bao) nhưng tỷ lệ kèo bóng đá mới thì không, từ góc độ thống nhất dữ liệu, tỷ lệ kèo bóng đá cũ sẽ được xóa khỏi thuê bao. Vì vậy,Cập nhậtđược chuyển thành AXóa.

Nếu tỷ lệ kèo bóng đá cũ không thỏa mãn biểu thức bộ lọc tỷ lệ kèo bóng đá (nó không được gửi đến người đăng ký) nhưng tỷ lệ kèo bóng đá mới thì, từ góc độ thống nhất dữ liệu, tỷ lệ kèo bóng đá mới nên được thêm vào thuê bao. Vì vậy,Cập nhậtđược chuyển thànhChèn.

tỷ lệ kèo bóng đá 31.1Tóm tắt các phép biến đổi được áp dụng.

tỷ lệ kèo bóng đá 31.1.Cập nhậtTóm tắt chuyển đổi

tỷ lệ kèo bóng đá cũ tỷ lệ kèo bóng đá mới Transformation
Không phù hợp Không phù hợp không sao chép
Không phù hợp khớp Chèn
khớp Không phù hợp Xóa
khớp khớp Cập nhật

31.3.4. tỷ lệ kèo bóng đá được phân vùng#

Nếu ấn phẩm chứa tỷ lệ kèo bóng đá được phân vùng, tham số xuất bảnpublish_via_partition_rootXác định bộ lọc tỷ lệ kèo bóng đá nào được sử dụng. Nếu nhưpublish_via_partition_rootTRUE, Thetỷ lệ kèo bóng đá phân vùng gốcBộ lọc tỷ lệ kèo bóng đá được sử dụng. Nếu không, nếupublish_via_partition_rootSai(mặc định), mỗiPhân vùngBộ lọc tỷ lệ kèo bóng đá được sử dụng.

31.3.5. Đồng bộ hóa dữ liệu ban đầu#

Nếu đăng ký yêu cầu sao chép dữ liệu tỷ lệ kèo bóng đá đã tồn tại trước và một ấn phẩm chứaWHEREĐiều khoản, chỉ dữ liệu thỏa mãn các biểu thức bộ lọc tỷ lệ kèo bóng đá được sao chép vào thuê bao.

Nếu đăng ký có một số ấn phẩm trong đó một tỷ lệ kèo bóng đá đã được xuất bản với khác nhauWHEREmệnh đề, tỷ lệ kèo bóng đá thỏa mãnanycủa các biểu thức sẽ được sao chép. Nhìn thấyPhần 31.3.6Để biết chi tiết.

Cảnh báo

Vì đồng bộ hóa dữ liệu ban đầu không tính đếnxuất bảnTham số Khi sao chép dữ liệu bảng hiện tại, một số tỷ lệ kèo bóng đá có thể được sao chép sẽ không được sao chép bằng DML. Tham khảoPhần 31.7.1, và xemPhần 31.2.2cho các ví dụ.

Lưu ý

Nếu thuê bao trong bản phát hành trước 15, hãy sao chép dữ liệu tồn tại trước không sử dụng các bộ lọc tỷ lệ kèo bóng đá ngay cả khi chúng được xác định trong ấn phẩm. Điều này là do các bản phát hành cũ chỉ có thể sao chép toàn bộ dữ liệu bảng.

31.3.6. Kết hợp nhiều bộ lọc tỷ lệ kèo bóng đá#

Nếu đăng ký có một số ấn phẩm trong đó cùng một bảng đã được xuất bản với các bộ lọc tỷ lệ kèo bóng đá khác nhau (cho cùng mộtxuất bảnHoạt động), những biểu thức đó được tạo ra cùng nhau, để các tỷ lệ kèo bóng đá thỏa mãnbất kỳcủa các biểu thức sẽ được nhân rộng. Điều này có nghĩa là tất cả các bộ lọc tỷ lệ kèo bóng đá khác cho cùng một bảng trở nên dư thừa nếu:

  • Một trong những ấn phẩm không có bộ lọc tỷ lệ kèo bóng đá.

  • Một trong những ấn phẩm đã được tạo bằng cách sử dụngcho tất cả các tỷ lệ kèo bóng đá. Mệnh đề này không cho phép các bộ lọc tỷ lệ kèo bóng đá.

  • Một trong những ấn phẩm đã được tạo bằng cách sử dụngcho các tỷ lệ kèo bóng đá trong lược đồvà bảng thuộc về lược đồ được giới thiệu. Mệnh đề này không cho phép các bộ lọc tỷ lệ kèo bóng đá.

31.3.7. Ví dụ#

Tạo một số tỷ lệ kèo bóng đá sẽ được sử dụng trong các ví dụ sau.

test_pub =# Tạo tỷ lệ kèo bóng đá T1 (A Int, B Int, C văn bản, Khóa chính (A, C));
Tạo tỷ lệ kèo bóng đá
test_pub =# Tạo tỷ lệ kèo bóng đá T2 (d int, e int, f int, khóa chính (d));
Tạo tỷ lệ kèo bóng đá
test_pub =# tạo tỷ lệ kèo bóng đá t3 (g int, h int, i int, phím chính (g));
Tạo tỷ lệ kèo bóng đá

Tạo một số ấn phẩm. Xuất bảnP1Có một tỷ lệ kèo bóng đá (T1) Và bảng đó có bộ lọc tỷ lệ kèo bóng đá. Xuất bảnP2có hai tỷ lệ kèo bóng đá. BànT1không có bộ lọc tỷ lệ kèo bóng đá và bảngT2có bộ lọc tỷ lệ kèo bóng đá. Xuất bảnP3có hai bảng và cả hai đều có bộ lọc tỷ lệ kèo bóng đá.

test_pub =# Tạo ấn phẩm P1 cho tỷ lệ kèo bóng đá T1 trong đó (a 5 và c = 'nsw');
Tạo ấn phẩm
test_pub =# Tạo ấn phẩm P2 cho tỷ lệ kèo bóng đá T1, T2 trong đó (E = 99);
Tạo ấn phẩm
test_pub =# Tạo ấn phẩm P3 cho tỷ lệ kèo bóng đá T2 trong đó (d = 10), T3 trong đó (g = 10);
Tạo ấn phẩm

PSQLcó thể được sử dụng để hiển thị các biểu thức bộ lọc tỷ lệ kèo bóng đá (nếu được xác định) cho mỗi ấn phẩm.

test_pub =# \ DRP+
                               Xuất bản P1
  Chủ sở hữu | Tất cả các tỷ lệ kèo bóng đá | Chèn | Cập nhật | Xóa | Cắt ngắn | Thông qua root
----------+------------+---------+---------+---------+-----------+--------------
 Postgres | f | t | t | t | t | f
tỷ lệ kèo bóng đá:
    "public.t1" ở đâu ((a 5) và (c = 'nsw' :: văn bản)))

                               Xuất bản P2
  Chủ sở hữu | Tất cả các tỷ lệ kèo bóng đá | Chèn | Cập nhật | Xóa | Cắt ngắn | Thông qua root
----------+------------+---------+---------+---------+-----------+--------------
 Postgres | f | t | t | t | t | f
tỷ lệ kèo bóng đá:
    "public.t1"
    "public.t2" ở đâu (e = 99)

                               Ấn phẩm P3
  Chủ sở hữu | Tất cả các tỷ lệ kèo bóng đá | Chèn | Cập nhật | Xóa | Cắt ngắn | Thông qua root
----------+------------+---------+---------+---------+-----------+--------------
 Postgres | f | t | t | t | t | f
tỷ lệ kèo bóng đá:
    "public.t2" ở đâu (d = 10)
    "public.t3" ở đâu (g = 10)

PSQLcó thể được sử dụng để hiển thị các biểu thức bộ lọc tỷ lệ kèo bóng đá (nếu được xác định) cho mỗi bảng. Xem bảng đóT1là thành viên của hai ấn phẩm, nhưng chỉ có bộ lọc tỷ lệ kèo bóng đá trongP1. Xem tỷ lệ kèo bóng đá đóT2là thành viên của hai ấn phẩm và có bộ lọc tỷ lệ kèo bóng đá khác nhau trong mỗi bộ phận.

test_pub =# \ d t1
                 tỷ lệ kèo bóng đá "public.t1"
 Cột |  Loại | Đối chiếu | Vô hiệu | Mặc định
--------+---------+-----------+----------+---------
 A | Số nguyên |           | không phải null |
 B | Số nguyên |           |          |
 C | Văn bản |           | không phải null |
Chỉ mục:
    Khóa chính "T1_PKEY", Btree (A, C)
Ấn phẩm:
    "P1" ở đâu ((a 5) và (c = 'nsw' :: văn bản))
    "P2"

test_pub =# \ d t2
                 tỷ lệ kèo bóng đá "public.t2"
 Cột |  Loại | Đối chiếu | Vô hiệu | Mặc định
--------+---------+-----------+----------+---------
 D | Số nguyên |           | không phải null |
 E | Số nguyên |           |          |
 f | Số nguyên |           |          |
Chỉ mục:
    Khóa chính "T2_PKEY", Btree (D)
Ấn phẩm:
    "P2" ở đâu (E = 99)
    "P3" ở đâu (d = 10)

test_pub =# \ d t3
                 tỷ lệ kèo bóng đá "public.t3"
 Cột |  Loại | Đối chiếu | Vô hiệu | Mặc định
--------+---------+-----------+----------+---------
 g | Số nguyên |           | không phải null |
 H | Số nguyên |           |          |
 Tôi | Số nguyên |           |          |
Chỉ mục:
    Khóa chính "T3_PKEY", Btree (G)
Ấn phẩm:
    "P3" ở đâu (g = 10)

Trên nút thuê bao, tạo tỷ lệ kèo bóng đáT1Với định nghĩa tương tự như trên nhà xuất bản và cũng tạo đăng kýS1Đăng ký xuất bảnP1.

test_sub =# Tạo tỷ lệ kèo bóng đá T1 (A Int, B Int, C văn bản, Khóa chính (A, C));
Tạo tỷ lệ kèo bóng đá
test_sub =# Tạo đăng ký S1
test_sub-# kết nối 'host = localhost dbname = test_pub applice_name = s1'
test_sub-# xuất bản P1;
Tạo đăng ký

Chèn một số tỷ lệ kèo bóng đá. Chỉ các tỷ lệ kèo bóng đá thỏa mãnT1 trong đómệnh đề xuất bảnP1được sao chép.

test_pub =# chèn vào các giá trị T1 (2, 102, 'nsw');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (3, 103, 'qld');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (4, 104, 'Vic');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (5, 105, 'hành động');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (6, 106, 'nsw');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (7, 107, 'nt');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (8, 108, 'qld');
Chèn 0 1
test_pub =# chèn vào các giá trị T1 (9, 109, 'nsw');
Chèn 0 1

test_pub =# Chọn * từ T1;
 A |  B |  c
---+-----+-----
 2 | 102 | NSW
 3 | 103 | QLD
 4 | 104 | Vic
 5 | 105 | HÀNH ĐỘNG
 6 | 106 | NSW
 7 | 107 | Nt
 8 | 108 | QLD
 9 | 109 | NSW
(8 tỷ lệ kèo bóng đá)
test_sub =# Chọn * từ T1;
 A |  B |  c
---+-----+-----
 6 | 106 | NSW
 9 | 109 | NSW
(2 tỷ lệ kèo bóng đá)

Cập nhật một số dữ liệu, trong đó tỷ lệ kèo bóng đá cũ và mới có giá trị cả hai thỏa mãnT1 trong đómệnh đề xuất bảnP1. TheCập nhậtsao chép thay đổi như bình thường.

test_pub =# cập nhật T1 Đặt b = 999 trong đó a = 6;
Cập nhật 1

test_pub =# Chọn * từ T1;
 A |  B |  c
---+-----+-----
 2 | 102 | NSW
 3 | 103 | QLD
 4 | 104 | Vic
 5 | 105 | HÀNH ĐỘNG
 7 | 107 | Nt
 8 | 108 | QLD
 9 | 109 | NSW
 6 | 999 | NSW
(8 tỷ lệ kèo bóng đá)
test_sub =# Chọn * từ T1;
 A |  B |  c
---+-----+-----
 9 | 109 | NSW
 6 | 999 | NSW
(2 tỷ lệ kèo bóng đá)

Cập nhật một số dữ liệu, trong đó các giá trị tỷ lệ kèo bóng đá cũ không thỏa mãnT1 trong đómệnh đề xuất bảnP1, nhưng các giá trị tỷ lệ kèo bóng đá mới sẽ thỏa mãn nó. TheCập nhậtđược chuyển thànhChènvà thay đổi được nhân rộng. Xem tỷ lệ kèo bóng đá mới trên thuê bao.

test_pub =# cập nhật T1 Đặt A = 555 trong đó a = 2;
Cập nhật 1

test_pub =# Chọn * từ T1;
  A |  B |  c
-----+-----+-----
   3 | 103 | QLD
   4 | 104 | Vic
   5 | 105 | HÀNH ĐỘNG
   7 | 107 | Nt
   8 | 108 | QLD
   9 | 109 | NSW
   6 | 999 | NSW
 555 | 102 | NSW
(8 tỷ lệ kèo bóng đá)
test_sub =# Chọn * từ T1;
  A |  B |  c
-----+-----+-----
   9 | 109 | NSW
   6 | 999 | NSW
 555 | 102 | NSW
(3 tỷ lệ kèo bóng đá)

Cập nhật một số dữ liệu, trong đó các giá trị tỷ lệ kèo bóng đá cũ thỏa mãnT1 trong đómệnh đề xuất bảnP1, nhưng các giá trị tỷ lệ kèo bóng đá mới không thỏa mãn nó. TheCập nhậtđược biến thành AXóavà thay đổi được nhân rộng. Xem rằng tỷ lệ kèo bóng đá bị xóa khỏi thuê bao.

test_pub =# cập nhật t1 đặt c = 'Vic' trong đó a = 9;
Cập nhật 1

test_pub =# Chọn * từ T1;
  A |  B |  c
-----+-----+-----
   3 | 103 | QLD
   4 | 104 | Vic
   5 | 105 | HÀNH ĐỘNG
   7 | 107 | Nt
   8 | 108 | QLD
   6 | 999 | NSW
 555 | 102 | NSW
   9 | 109 | Vic
(8 tỷ lệ kèo bóng đá)
test_sub =# Chọn * từ T1;
  A |  B |  c
-----+-----+-----
   6 | 999 | NSW
 555 | 102 | NSW
(2 tỷ lệ kèo bóng đá)

Các ví dụ sau đây cho thấy tham số xuất bảnpublish_via_partition_rootXác định xem bộ lọc tỷ lệ kèo bóng đá của bảng cha hoặc con sẽ được sử dụng trong trường hợp các bảng được phân vùng.

Tạo tỷ lệ kèo bóng đá được phân vùng trên nhà xuất bản.

test_pub =# tạo tỷ lệ kèo bóng đá cha (khóa chính int) phân vùng theo phạm vi (a);
Tạo tỷ lệ kèo bóng đá
test_pub =# Tạo tỷ lệ kèo bóng đá phân vùng con của mặc định cha;
Tạo tỷ lệ kèo bóng đá

Tạo cùng một tỷ lệ kèo bóng đá trên thuê bao.

test_sub =# tạo tỷ lệ kèo bóng đá cha mẹ (khóa chính int) phân vùng theo phạm vi (a);
Tạo tỷ lệ kèo bóng đá
test_sub =# Tạo tỷ lệ kèo bóng đá phân vùng con của mặc định cha mẹ;
Tạo tỷ lệ kèo bóng đá

Tạo ấn phẩmP4, và sau đó đăng ký vào nó. Tham số xuất bảnpublish_via_partition_rootđược đặt là đúng. Có các bộ lọc tỷ lệ kèo bóng đá được xác định trên cả hai bảng được phân vùng (Cha mẹ) và trên phân vùng (con).

test_pub =# Tạo ấn phẩm P4 cho cha mẹ trong đó (a <5), con trong đó (a = 5)
test_pub-# với (publish_via_partition_root = true);
Tạo ấn phẩm
test_sub =# Tạo đăng ký S4
test_sub-# kết nối 'host = localhost dbname = test_pub applice_name = s4'
test_sub-# xuất bản P4;
Tạo đăng ký

Chèn một số giá trị trực tiếp vàocha mẹconBảng. Họ sao chép bằng bộ lọc tỷ lệ kèo bóng đá củacha mẹ(vìpublish_via_partition_rootlà đúng).

test_pub =# chèn vào các giá trị cha mẹ (2), (4), (6);
Chèn 0 3
test_pub =# chèn vào các giá trị con (3), (5), (7);
Chèn 0 3

test_pub =# select * từ thứ tự cha của a;
 Một
---
 2
 3
 4
 5
 6
 7
(6 tỷ lệ kèo bóng đá)
test_sub =# Chọn * từ thứ tự cha của A;
 Một
---
 2
 3
 4
(3 tỷ lệ kèo bóng đá)

Lặp lại cùng một bài kiểm tra, nhưng với giá trị khác vớipublish_via_partition_root. Tham số xuất bảnpublish_via_partition_rootđược đặt là sai. Bộ lọc tỷ lệ kèo bóng đá được xác định trên phân vùng (con).

test_pub =# thả xuất bản P4;
Thả xuất bản
test_pub =# Tạo ấn phẩm P4 cho cha mẹ, con trong đó (a = 5)
test_pub-# với (publish_via_partition_root = false);
Tạo ấn phẩm
test_sub =# thay đổi đăng ký S4 Xuất bản làm mới;
Thay đổi đăng ký

Thực hiện các phần chèn trên nhà xuất bản giống như trước đây. Họ sao chép bằng bộ lọc tỷ lệ kèo bóng đá củacon(vìpublish_via_partition_rootlà sai).

test_pub =# cha mẹ cắt ngắn;
Bàn cắt ngắn
test_pub =# chèn vào các giá trị cha (2), (4), (6);
Chèn 0 3
test_pub =# chèn vào các giá trị con (3), (5), (7);
Chèn 0 3

test_pub =# select * từ thứ tự cha của a;
 Một
---
 2
 3
 4
 5
 6
 7
(6 tỷ lệ kèo bóng đá)
test_sub =# select * từ đơn đặt tỷ lệ kèo bóng đá con bởi a;
 Một
---
 5
 6
 7
(3 tỷ lệ kèo bóng đá)

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.