Theo mặc định, tất cả dữ liệu từ tất cả các kèo bóng đá euro được xuất bản 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 kèo bóng đá euro. Người dùng có thể chọn sử dụng các bộ lọc kèo bóng đá euro 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 kèo bóng đá euro, một kèo bóng đá euro chỉ được sao chép nếu dữ liệu của nó thỏa mãn biểu thức bộ lọc kèo bóng đá euro. Đ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 kèo bóng đá euro được xác định cho mỗi bảng. Sử dụng AWHERE
mệnh đề sau tên bảng cho mỗi bảng được xuất bản yêu cầu dữ liệu được kèo bóng đá euro ra. TheWHERE
mệ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.
Bộ lọc kèo bóng đá euro được áp dụngtrướcXuất bản các thay đổi. Nếu bộ lọc kèo bóng đá euro đánh giá làSai
hoặcnull
Sau đó, kèo bóng đá euro không được nhân rộng. TheWHERE
Biể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ối
mệnh đề củaTạo đăng ký). Bộ lọc kèo bóng đá euro không có tác dụng chocắt ngắn
lệnh.
TheWHERE
mệ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ật
hoặcXóa
Hoạt động, Bộ lọc kèo bóng đá euroWHERE
mệ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èn
Hoạt động, Bộ lọc kèo bóng đá euroWHERE
mệnh đề có thể sử dụng bất kỳ cột nào.
Bất cứ khi nàoCập nhật
được xử lý, biểu thức bộ lọc kèo bóng đá euro được đánh giá cho cả kèo bóng đá euro cũ và kèo bóng đá euro 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ật
Thay đổ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 kèo bóng đá euro cũ/mới phù hợp với biểu thức bộ lọc kèo bóng đá euro,Cập nhật
được chuyển đổi thànhChèn
hoặcXóa
, để tránh mọi sự không nhất quán về dữ liệu. kèo bóng đá euro trên thuê bao sẽ phản ánh những gì được xác định bởi biểu thức bộ lọc kèo bóng đá euro trên nhà xuất bản.
12048_12258Cập nhật
được chuyển thành AXóa
.
Nếu kèo bóng đá euro cũ không thỏa mãn biểu thức bộ lọc kèo bóng đá euro (nó không được gửi đến thuê bao) nhưng kèo bóng đá euro mới thì, từ góc độ thống nhất dữ liệu, kèo bóng đá euro mới nên được thêm vào thuê bao. Vì vậy,Cập nhật
được chuyển thànhChèn
.
kèo bóng đá euro 29.1Tóm tắt các phép biến đổi được áp dụng.
kèo bóng đá euro 29.1.Cập nhật
Tóm tắt chuyển đổi
kèo bóng đá euro cũ | kèo bóng đá euro mới | Chuyển đổi |
---|---|---|
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 | Match | Cập nhật |
Nếu ấn phẩm chứa kèo bóng đá euro được phân vùng, tham số xuất bảnpublish_via_partition_root
Xác định bộ lọc kèo bóng đá euro nào được sử dụng. Nếu nhưpublish_via_partition_root
làTRUE
, Thekèo bóng đá euro phân vùng gốcBộ lọc kèo bóng đá euro được sử dụng. Nếu không, nếupublish_via_partition_root
làSai
(mặc định), mỗiphân vùngBộ lọc kèo bóng đá euro được sử dụng.
Nếu đăng ký yêu cầu sao chép dữ liệu kèo bóng đá euro đã tồn tại trước và một ấn phẩm chứaWHERE
mệnh đề, chỉ dữ liệu thỏa mãn các biểu thức bộ lọc kèo bóng đá euro được sao chép vào thuê bao.
Nếu đăng ký có một số ấn phẩm trong đó một kèo bóng đá euro đã được xuất bản với khác nhauWHERE
mệnh đề, kèo bóng đá euro thỏa mãnbất kỳcủa các biểu thức sẽ được sao chép. Nhìn thấyPhần 29.4.6Để biết chi tiết.
Vì đồng bộ hóa dữ liệu ban đầu không tính đếnxuất bản
Tham số Khi sao chép dữ liệu bảng hiện tại, một số kèo bóng đá euro có thể được sao chép không được sao chép bằng DML. Tham khảoPhần 29.8.1, và xemPhần 29.2.2cho các ví dụ.
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 kèo bóng đá euro 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.
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 kèo bóng đá euro khác nhau (cho cùng mộtxuất bản
Hoạt động), những biểu thức đó có được với nhau, để các kèo bóng đá euro thỏa mãnanycủ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 kèo bóng đá euro 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 kèo bóng đá euro.
Một trong những ấn phẩm đã được tạo bằng cách sử dụngcho tất cả các kèo bóng đá euro
. Mệnh đề này không cho phép các bộ lọc kèo bóng đá euro.
Một trong những ấn phẩm đã được tạo bằng cách sử dụngĐối với các kèo bóng đá euro 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 kèo bóng đá euro.
Tạo một số kèo bóng đá euro sẽ được sử dụng trong các ví dụ sau.
test_pub =# Tạo kèo bóng đá euro T1 (A Int, B Int, C văn bản, Khóa chính (A, C)); Tạo kèo bóng đá euro test_pub =# Tạo kèo bóng đá euro T2 (d int, e int, f int, khóa chính (d)); Tạo kèo bóng đá euro test_pub =# tạo kèo bóng đá euro t3 (g int, h int, i int, phím chính (g)); Tạo kèo bóng đá euro
Tạo một số ấn phẩm. Xuất bảnP1
Có một kèo bóng đá euro (T1
) Và bảng đó có bộ lọc kèo bóng đá euro. Xuất bảnP2
có hai kèo bóng đá euro. BànT1
không có bộ lọc kèo bóng đá euro và bảngT2
có bộ lọc kèo bóng đá euro. Xuất bảnP3
Có hai bảng và cả hai đều có bộ lọc kèo bóng đá euro.
test_pub =# Tạo ấn phẩm P1 cho kèo bóng đá euro T1 trong đó (a 5 và c = 'nsw'); Tạo ấn phẩm test_pub =# Tạo ấn phẩm P2 cho kèo bóng đá euro T1, T2 trong đó (E = 99); Tạo ấn phẩm test_pub =# Tạo ấn phẩm P3 cho kèo bóng đá euro T2 trong đó (d = 10), T3 trong đó (g = 10); Tạo ấn phẩm
PSQL
có thể được sử dụng để hiển thị các biểu thức bộ lọc kèo bóng đá euro (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 kèo bóng đá euro | Chèn | Cập nhật | Xóa | Cắt ngắn | Thông qua root ----------+------------+---------+---------+---------+-----------+-------------- Postgres | f | t | t | t | t | f kèo bóng đá euro: "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 kèo bóng đá euro | Chèn | Cập nhật | Xóa | Cắt ngắn | Thông qua root ----------+------------+---------+---------+---------+-----------+-------------- Postgres | f | t | t | t | t | f kèo bóng đá euro: "public.t1" "public.t2" ở đâu (e = 99) Ấn phẩm P3 Chủ sở hữu | Tất cả các kèo bóng đá euro | Chèn | Cập nhật | Xóa | Cắt ngắn | Thông qua root ----------+------------+---------+---------+---------+-----------+-------------- Postgres | f | t | t | t | t | f kèo bóng đá euro: "public.t2" ở đâu (d = 10) "public.t3" ở đâu (g = 10)
PSQL
có thể được sử dụng để hiển thị các biểu thức bộ lọc kèo bóng đá euro (nếu được xác định) cho mỗi bảng. Xem bảng đóT1
là thành viên của hai ấn phẩm, nhưng chỉ có bộ lọc kèo bóng đá euro trongP1
. Xem kèo bóng đá euro đóT2
là thành viên của hai ấn phẩm và có bộ lọc kèo bóng đá euro khác nhau trong mỗi bộ phận.
test_pub =# \ d t1 kèo bóng đá euro "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 kèo bóng đá euro "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 kèo bóng đá euro "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 kèo bóng đá euroT1
Vớ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 kèo bóng đá euro T1 (A Int, B Int, C văn bản, Khóa chính (A, C)); Tạo kèo bóng đá euro 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ố kèo bóng đá euro. Chỉ các kèo bóng đá euro 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 kèo bóng đá euro)
test_sub =# Chọn * từ T1; A | B | c ---+-----+----- 6 | 106 | NSW 9 | 109 | NSW (2 kèo bóng đá euro)
Cập nhật một số dữ liệu, trong đó kèo bóng đá euro cũ và mới có giá trị cả hai thỏa mãnT1 trong đó
mệnh đề xuất bảnP1
. TheCập nhật
sao 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 kèo bóng đá euro)
test_sub =# Chọn * từ T1; A | B | c ---+-----+----- 9 | 109 | NSW 6 | 999 | NSW (2 kèo bóng đá euro)
Cập nhật một số dữ liệu, trong đó các giá trị kèo bóng đá euro cũ không thỏa mãnT1 trong đó
mệnh đề xuất bảnP1
, nhưng các giá trị kèo bóng đá euro mới sẽ thỏa mãn nó. TheCập nhật
được chuyển thànhChèn
và thay đổi được nhân rộng. Xem kèo bóng đá euro 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 kèo bóng đá euro)
test_sub =# Chọn * từ T1; A | B | c -----+-----+----- 9 | 109 | NSW 6 | 999 | NSW 555 | 102 | NSW (3 kèo bóng đá euro)
Cập nhật một số dữ liệu, trong đó các giá trị kèo bóng đá euro cũ thỏa mãnT1 trong đó
mệnh đề xuất bảnP1
, nhưng các giá trị kèo bóng đá euro mới không thỏa mãn nó. TheCập nhật
được biến thành AXóa
và thay đổi được nhân rộng. Xem rằng kèo bóng đá euro bị xóa khỏi thuê bao.
test_pub =# cập nhật t1 set 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 kèo bóng đá euro)
test_sub =# Chọn * từ T1; A | B | c -----+-----+----- 6 | 999 | NSW 555 | 102 | NSW (2 kèo bóng đá euro)
Các ví dụ sau đây cho thấy cách tham số xuất bảnpublish_via_partition_root
Xác định xem bộ lọc kèo bóng đá euro của bảng cha hoặc con sẽ được sử dụng trong trường hợp bảng được phân vùng.
Tạo kèo bóng đá euro được phân vùng trên nhà xuất bản.
test_pub =# Tạo kèo bóng đá euro cha (khóa chính int) phân vùng theo phạm vi (a); Tạo kèo bóng đá euro test_pub =# Tạo kèo bóng đá euro phân vùng con của mặc định cha; Tạo kèo bóng đá euro
Tạo cùng một kèo bóng đá euro trên thuê bao.
test_sub =# Tạo kèo bóng đá euro cha (khóa chính int) phân vùng theo phạm vi (a); Tạo kèo bóng đá euro test_sub =# Tạo kèo bóng đá euro phân vùng con của mặc định cha mẹ; Tạo kèo bóng đá euro
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 kèo bóng đá euro đượ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ẹ
vàcon
Bảng. Họ sao chép bằng bộ lọc kèo bóng đá euro củacha mẹ
(vìpublish_via_partition_root
là đú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 kèo bóng đá euro)
test_sub =# Chọn * từ thứ tự cha của A; Một --- 2 3 4 (3 kèo bóng đá euro)
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 kèo bóng đá euro đượ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 kèo bóng đá euro củacon
(vìpublish_via_partition_root
là 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 kèo bóng đá euro)
test_sub =# select * từ đơn kèo bóng đá euro con của a; Một --- 5 6 7 (3 kèo bóng đá euro)
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.