11007_11537
Đến cuối, SQL cho phép bạn xác định các ràng buộc trên các cột và bảng. Các ràng buộc cung cấp cho bạn nhiều quyền kiểm soát dữ liệu trong các bảng như bạn muốn. Nếu người dùng cố gắng lưu trữ dữ liệu trong kèo tỷ số bóng đá euro hôm nay cột vi phạm ràng buộc, kèo tỷ số bóng đá euro hôm nay lỗi sẽ được nêu ra. Điều này áp dụng ngay cả khi giá trị đến từ định nghĩa giá trị mặc định.
kèo tỷ số bóng đá euro hôm nay ràng buộc kiểm tra là loại ràng buộc chung nhất. Nó cho phép bạn chỉ định rằng giá trị trong kèo tỷ số bóng đá euro hôm nay cột nhất định phải thỏa mãn biểu thức boolean (giá trị sự thật). Chẳng hạn, để yêu cầu giá sản phẩm tích cực, bạn có thể sử dụng:
Tạo sản phẩm bảng (
sản phẩm_no số nguyên,
tên văn bản,
Giá sốKiểm tra (Giá 0));
Như bạn thấy, định nghĩa ràng buộc xuất hiện sau kiểu dữ liệu, giống như các định nghĩa giá trị mặc định. Các giá trị và ràng buộc mặc định có thể được liệt kê theo bất kỳ thứ tự nào. kèo tỷ số bóng đá euro hôm nay ràng buộc kiểm tra bao gồm từ khóaKiểm tra
theo sau là kèo tỷ số bóng đá euro hôm nay biểu thức trong ngoặc đơn. Biểu thức ràng buộc kiểm tra sẽ liên quan đến cột do đó bị ràng buộc, nếu không thì ràng buộc sẽ không quá nhiều ý nghĩa.
Bạn cũng có thể đặt cho ràng buộc kèo tỷ số bóng đá euro hôm nay tên riêng. Điều này làm rõ thông báo lỗi và cho phép bạn tham khảo ràng buộc khi bạn cần thay đổi nó. Cú pháp là:
Tạo sản phẩm bảng (
sản phẩm_no số nguyên,
tên văn bản,
Giá số13467_13494Kiểm tra (Giá 0)
);
Vì vậy, để chỉ định kèo tỷ số bóng đá euro hôm nay ràng buộc được đặt tên, hãy sử dụng từ khóakèo tỷ số bóng đá euro hôm nay
theo sau là kèo tỷ số bóng đá euro hôm nay định danh theo sau là định nghĩa ràng buộc. (Nếu bạn không chỉ định tên ràng buộc theo cách này, hệ thống sẽ chọn tên cho bạn.)
kèo tỷ số bóng đá euro hôm nay ràng buộc kiểm tra cũng có thể tham khảo kèo tỷ số bóng đá euro hôm nay số cột. Giả sử bạn lưu trữ giá thông thường và giá chiết khấu, và bạn muốn đảm bảo rằng giá chiết khấu thấp hơn giá thông thường:
Tạo sản phẩm bảng (
sản phẩm_no số nguyên,
tên văn bản,
Kiểm tra số giá (Giá 0),
Trở nên chiết khấu_price kiểm tra số (chiết khấu_price 0),Kiểm tra (Giá Giảm giá_price));
Hai ràng buộc đầu tiên sẽ trông quen thuộc. Cái thứ ba sử dụng cú pháp mới. Nó không được gắn vào kèo tỷ số bóng đá euro hôm nay cột cụ thể, thay vào đó nó xuất hiện dưới dạng kèo tỷ số bóng đá euro hôm nay mục riêng biệt trong danh sách cột được phân tách bằng dấu phẩy. Định nghĩa cột và các định nghĩa ràng buộc này có thể được liệt kê theo thứ tự hỗn hợp.
Chúng tôi nói rằng hai ràng buộc đầu tiên là các ràng buộc cột, trong khi cái thứ ba là kèo tỷ số bóng đá euro hôm nay ràng buộc bảng vì nó được viết riêng biệt với bất kỳ định nghĩa cột nào. Các ràng buộc cột cũng có thể được viết dưới dạng các ràng buộc của bảng, trong khi điều ngược lại là không nhất thiết có thể, vì kèo tỷ số bóng đá euro hôm nay ràng buộc cột được cho là chỉ đề cập đến cột nó được gắn vào. (POSTGRESQLKhông thực thi quy tắc đó, nhưng bạn nên tuân theo nó nếu bạn muốn kèo tỷ số bóng đá euro hôm nay định nghĩa bảng của mình hoạt động với kèo tỷ số bóng đá euro hôm nay hệ thống cơ sở dữ liệu khác.) Ví dụ trên cũng có thể được viết là:
Tạo sản phẩm bảng ( sản phẩm_no số nguyên, tên văn bản, Giá số, Kiểm tra (Giá 0), giảm chiết khấu_price số, Kiểm tra (chiết khấu_price 0), Kiểm tra (Giá Giảm giá_price) );
hoặc thậm chí:
Tạo sản phẩm bảng ( sản phẩm_no số nguyên, tên văn bản, Kiểm tra số giá (Giá 0), giảm chiết khấu_price số, Séc (chiết khấu_price 0 và giá chiết khấu_price) );
Đó là vấn đề của hương vị.
Tên có thể được gán cho kèo tỷ số bóng đá euro hôm nay ràng buộc của bảng theo cách tương tự như kèo tỷ số bóng đá euro hôm nay ràng buộc cột:
Tạo sản phẩm bảng (
sản phẩm_no số nguyên,
tên văn bản,
Giá số,
Kiểm tra (Giá 0),
giảm chiết khấu_price số,
Kiểm tra (chiết khấu_price 0),16066_16093Kiểm tra (Giá Giảm giá_price)
);
Cần lưu ý rằng kèo tỷ số bóng đá euro hôm nay ràng buộc kiểm tra được thỏa mãn nếu biểu thức kiểm tra đánh giá thành giá trị true hoặc null. Vì hầu hết các biểu thức sẽ đánh giá đến giá trị null nếu bất kỳ toán hạng nào là null, chúng sẽ không ngăn các giá trị null trong các cột bị ràng buộc. Để đảm bảo rằng kèo tỷ số bóng đá euro hôm nay cột không chứa các giá trị null, có thể sử dụng ràng buộc không có null được mô tả trong phần tiếp theo.
PostgreSQLkhông hỗ trợKiểm tra
kèo tỷ số bóng đá euro hôm nay ràng buộc dữ liệu bảng tham chiếu khác với hàng mới hoặc được cập nhật đang được kiểm tra. Trong khi aKiểm tra
ràng buộc vi phạm quy tắc này có thể hoạt động trong các thử nghiệm đơn giản, không thể đảm bảo rằng cơ sở dữ liệu sẽ không đạt đến trạng thái trong đó điều kiện ràng buộc là sai (do những thay đổi tiếp theo của hàng khác liên quan). Điều này sẽ làm cho kèo tỷ số bóng đá euro hôm nay kết xuất cơ sở dữ liệu và khôi phục thất bại. Việc khôi phục có thể thất bại ngay cả khi trạng thái cơ sở dữ liệu hoàn chỉnh phù hợp với ràng buộc, do các hàng không được tải theo thứ tự sẽ thỏa mãn ràng buộc. Nếu có thể, hãy sử dụngđộc đáo
, loại trừ
hoặcKhóa nước ngoài
kèo tỷ số bóng đá euro hôm nay ràng buộc để thể hiện kèo tỷ số bóng đá euro hôm nay hạn chế về hàng chéo và bảng.
Nếu những gì bạn mong muốn là kiểm tra kèo tỷ số bóng đá euro hôm nay lần so với các hàng khác ở chèn hàng, thay vì bảo đảm tính nhất quán được duy trì liên tục, tùy chỉnhTriggercó thể được sử dụng để thực hiện điều đó. (Cách tiếp cận này tránh được vấn đề về kết xuất/khôi phục vìPG_DUMPKhông cài đặt lại kèo tỷ số bóng đá euro hôm nay trình kích hoạt cho đến sau khi khôi phục dữ liệu, để kiểm tra sẽ không được thực thi trong quá trình kết xuất/khôi phục.)
PostgreSQLgiả sử rằngKiểm tra
18227_18384Kiểm tra
18416_18599
kèo tỷ số bóng đá euro hôm nay ví dụ về kèo tỷ số bóng đá euro hôm nay cách chung để phá vỡ giả định này là tham chiếu chức năng do người dùng xác định trong AKiểm tra
Biểu thức, sau đó thay đổi hành vi của hàm đó.18828_18840Không không cho phép điều đó, nhưng nó sẽ không nhận thấy nếu có hàng trong bảng hiện vi phạmKiểm tra
ràng buộc. Điều đó sẽ làm cho kèo tỷ số bóng đá euro hôm nay kết xuất cơ sở dữ liệu tiếp theo và khôi phục thất bại. Cách được đề xuất để xử lý kèo tỷ số bóng đá euro hôm nay thay đổi như vậy là giảm ràng buộc (sử dụngBảng thay đổi
), điều chỉnh định nghĩa chức năng và thêm lại ràng buộc, do đó kiểm tra lại nó so với tất cả kèo tỷ số bóng đá euro hôm nay hàng bảng.
19646_19750
Tạo sản phẩm bảng ( Product_No Integerkhông null,, Tên văn bảnkhông null,, Giá số );
kèo tỷ số bóng đá euro hôm nay ràng buộc không null luôn được viết dưới dạng ràng buộc cột. kèo tỷ số bóng đá euro hôm nay ràng buộc không có null tương đương về mặt chức năng để tạo ràng buộc kiểm traKiểm tra (
, nhưng trongPostgreSQLTạo kèo tỷ số bóng đá euro hôm nay ràng buộc không khống rõ ràng là hiệu quả hơn. Hạn chế là bạn không thể đưa ra tên rõ ràng cho các ràng buộc không có null được tạo ra theo cách này.20199_20212
không phải là null)
Tất nhiên, kèo tỷ số bóng đá euro hôm nay cột có thể có nhiều hơn kèo tỷ số bóng đá euro hôm nay ràng buộc. Chỉ cần viết các ràng buộc lần lượt:
Tạo sản phẩm bảng ( Product_no Integer không phải NULL, Tên văn bản không phải null, Giá số không kiểm tra null (Giá 0) );
Thứ tự không quan trọng. Nó không nhất thiết xác định theo thứ tự nào kèo tỷ số bóng đá euro hôm nay ràng buộc được kiểm tra.
Thekhông null
kèo tỷ số bóng đá euro hôm nay có nghịch đảo:null
kèo tỷ số bóng đá euro hôm nay. Điều này không có nghĩa là cột phải là null, điều này chắc chắn sẽ là vô dụng. Thay vào đó, điều này chỉ cần chọn hành vi mặc định mà cột có thể là null. Thenull
21176_21296PostgreSQLĐể tương thích với kèo tỷ số bóng đá euro hôm nay số hệ thống cơ sở dữ liệu khác.) Tuy nhiên, kèo tỷ số bóng đá euro hôm nay số người dùng, giống như nó vì nó dễ dàng chuyển đổi ràng buộc trong kèo tỷ số bóng đá euro hôm nay tệp tập lệnh. Ví dụ: bạn có thể bắt đầu với:
Tạo sản phẩm bảng ( sản phẩm_no số nguyên null, tên văn bản null, Giá null số );
và sau đó chènkhông
Từ khóa mà mong muốn.
Trong hầu hết kèo tỷ số bóng đá euro hôm nay thiết kế cơ sở dữ liệu, phần lớn kèo tỷ số bóng đá euro hôm nay cột nên được đánh dấu không phải là NULL.
Các ràng buộc duy nhất đảm bảo rằng dữ liệu có trong kèo tỷ số bóng đá euro hôm nay cột hoặc kèo tỷ số bóng đá euro hôm nay nhóm cột, là duy nhất trong số tất cả các hàng trong bảng. Cú pháp là:
Tạo sản phẩm bảng (
Product_No Integerđộc đáo,,
tên văn bản,
Giá số
);
Khi được viết dưới dạng kèo tỷ số bóng đá euro hôm nay cột và:
Tạo sản phẩm bảng (
sản phẩm_no số nguyên,
tên văn bản,
Giá số,độc đáo (sản phẩm_no));
Khi được viết dưới dạng kèo tỷ số bóng đá euro hôm nay bảng.
Để xác định kèo tỷ số bóng đá euro hôm nay ràng buộc duy nhất cho kèo tỷ số bóng đá euro hôm nay nhóm các cột, hãy viết nó như kèo tỷ số bóng đá euro hôm nay ràng buộc bảng với các tên cột được phân tách bằng dấu phẩy:
Tạo ví dụ bảng (
kèo tỷ số bóng đá euro hôm nay số nguyên,
b số nguyên,
C Số nguyên,độc đáo (a, c));
Điều này chỉ định rằng sự kết hợp của các giá trị trong các cột được chỉ định là duy nhất trên toàn bộ bảng, mặc dù bất kỳ kèo tỷ số bóng đá euro hôm nay trong các cột nào cũng không cần phải (và thông thường không).
Bạn có thể gán tên của riêng mình cho kèo tỷ số bóng đá euro hôm nay ràng buộc duy nhất, theo cách thông thường:
Tạo sản phẩm bảng (
Product_No Integerkèo tỷ số bóng đá euro hôm nay phải_be_differentĐộc đáo,
tên văn bản,
Giá số
);
Thêm kèo tỷ số bóng đá euro hôm nay ràng buộc duy nhất sẽ tự động tạo kèo tỷ số bóng đá euro hôm nay chỉ mục B-cây duy nhất trên cột hoặc nhóm các cột được liệt kê trong ràng buộc. kèo tỷ số bóng đá euro hôm nay hạn chế duy nhất chỉ bao gồm kèo tỷ số bóng đá euro hôm nay số hàng không thể được viết như kèo tỷ số bóng đá euro hôm nay ràng buộc duy nhất, nhưng có thể thực thi kèo tỷ số bóng đá euro hôm nay hạn chế như vậy bằng cách tạo ra kèo tỷ số bóng đá euro hôm nay duy nhấtPostgresql: Tài liệu: 15: 11.8. .
24172_24625nulls không khác biệt
, như
Tạo sản phẩm bảng (
sản phẩm_no số nguyên duy nhấtnulls không khác biệt,,
tên văn bản,
Giá số
);
hoặc
Tạo sản phẩm bảng (
sản phẩm_no số nguyên,
tên văn bản,
Giá số,
ĐỘC NHẤTnulls không khác biệt(sản phẩm_no)
);
Hành vi mặc định có thể được chỉ định rõ ràng bằng cách sử dụngNULLS khác biệt
. Điều trị NULL mặc định trong các ràng buộc duy nhất được xác định theo triển khai theo tiêu chuẩn SQL và các triển khai khác có kèo tỷ số bóng đá euro hôm nay hành vi khác. Vì vậy, hãy cẩn thận khi phát triển các ứng dụng được dự định là di động.
kèo tỷ số bóng đá euro hôm nay ràng buộc khóa chính chỉ ra rằng kèo tỷ số bóng đá euro hôm nay cột hoặc nhóm cột, có thể được sử dụng như kèo tỷ số bóng đá euro hôm nay định danh duy nhất cho các hàng trong bảng. Điều này đòi hỏi các giá trị là cả độc đáo và không null. Vì vậy, hai định nghĩa bảng sau đây chấp nhận cùng kèo tỷ số bóng đá euro hôm nay dữ liệu:
Tạo sản phẩm bảng ( Product_no Integer độc đáo không phải NULL, tên văn bản, Giá số );
Tạo sản phẩm bảng (
Product_No IntegerKhóa chính,,
tên văn bản,
Giá số
);
Các phím chính có thể kéo dài nhiều hơn kèo tỷ số bóng đá euro hôm nay cột; Cú pháp tương tự như các ràng buộc duy nhất:
Tạo ví dụ bảng (
kèo tỷ số bóng đá euro hôm nay số nguyên,
b số nguyên,
C Số nguyên,Khóa chính (A, C));
Thêm khóa chính sẽ tự động tạo chỉ mục B-cây duy nhất trên cột hoặc nhóm kèo tỷ số bóng đá euro hôm nay cột được liệt kê trong khóa chính và sẽ buộc (kèo tỷ số bóng đá euro hôm nay) cột được đánh dấukhông null
.
kèo tỷ số bóng đá euro hôm nay bảng có thể có nhiều nhất kèo tỷ số bóng đá euro hôm nay khóa chính. . Quy tắc này không được thi hành bởiPostgreSQL, nhưng thường là tốt nhất để làm theo nó.
27299_27753
kèo tỷ số bóng đá euro hôm nay ràng buộc khóa nước ngoài chỉ định rằng các giá trị trong kèo tỷ số bóng đá euro hôm nay cột (hoặc kèo tỷ số bóng đá euro hôm nay nhóm cột) phải khớp với các giá trị xuất hiện trong kèo tỷ số bóng đá euro hôm nay số hàng của bảng khác. Chúng tôi nói điều này duy trìTính toàn vẹn tham chiếuGiữa hai bảng liên quan.
Nói rằng bạn có bảng sản phẩm mà chúng tôi đã sử dụng nhiều lần rồi:
Tạo sản phẩm bảng ( sản phẩm_no khóa chính số nguyên, tên văn bản, Giá số );
Hãy giả sử bạn có kèo tỷ số bóng đá euro hôm nay bảng lưu trữ đơn đặt hàng của các sản phẩm đó. Chúng tôi muốn đảm bảo rằng bảng đơn đặt hàng chỉ chứa các đơn đặt hàng sản phẩm thực sự tồn tại. Vì vậy, chúng tôi xác định kèo tỷ số bóng đá euro hôm nay ràng buộc khóa nước ngoài trong bảng đơn đặt hàng tham chiếu bảng sản phẩm:
Tạo đơn đặt hàng bảng (
Order_id Số nguyên chính, khóa chính,
Product_No IntegerTài liệu tham khảo Sản phẩm (sản phẩm_no),,
Số lượng số lượng
);
Bây giờ không thể tạo kèo tỷ số bóng đá euro hôm nay đơn đặt hàng có không nullsản phẩm_no
kèo tỷ số bóng đá euro hôm nay mục không xuất hiện trong bảng sản phẩm.
Chúng tôi nói rằng trong tình huống này, bảng đơn đặt hàng làTham khảoBảng và bảng sản phẩm làđược tham chiếuBảng. Tương tự, có kèo tỷ số bóng đá euro hôm nay cột tham chiếu và tham chiếu.
Bạn cũng có thể rút ngắn lệnh trên thành:
Tạo đơn đặt hàng bảng (
Order_id Số nguyên chính, khóa chính,
Product_No IntegerTài liệu tham khảo Sản phẩm,,
Số lượng số lượng
);
Vì không có danh sách cột, khóa chính của bảng được tham chiếu được sử dụng làm cột được tham chiếu.
Bạn có thể gán tên của riêng mình cho kèo tỷ số bóng đá euro hôm nay ràng buộc khóa nước ngoài, theo cách thông thường.
kèo tỷ số bóng đá euro hôm nay khóa ngoại cũng có thể ràng buộc và tham chiếu kèo tỷ số bóng đá euro hôm nay nhóm các cột. Như thường lệ, sau đó nó cần được viết trong hình thức ràng buộc bảng. Đây là kèo tỷ số bóng đá euro hôm nay ví dụ về cú pháp giả tạo:
Tạo bảng T1 (
kèo tỷ số bóng đá euro hôm nay khóa chính số nguyên,
b số nguyên,
C Số nguyên,Khóa nước ngoài (b, c) Tài liệu tham khảo khác_table (C1, C2));
Tất nhiên, số và loại của kèo tỷ số bóng đá euro hôm nay cột bị ràng buộc cần phải khớp với số và loại của kèo tỷ số bóng đá euro hôm nay cột được tham chiếu.
Đôi khi nó hữu ích choBảng khácHàngcủa kèo tỷ số bóng đá euro hôm nay ràng buộc khóa nước ngoài là cùng kèo tỷ số bóng đá euro hôm nay bảng; Đây được gọi làTự giới thiệuKhóa nước ngoài. Ví dụ: nếu bạn muốn kèo tỷ số bóng đá euro hôm nay hàng của bảng biểu diễn kèo tỷ số bóng đá euro hôm nay nút của cấu trúc cây, bạn có thể viết
Tạo cây bàn ( Node_id Số nguyên chính, khóa chính, Parent_id INTEGER TÀI LIỆU THAM KHẢO cây, tên văn bản, ... );
kèo tỷ số bóng đá euro hôm nay nút cấp cao nhất sẽ có nullParent_id
, trong khi không nullParent_id
Mục nhập sẽ bị hạn chế để tham chiếu kèo tỷ số bóng đá euro hôm nay hàng hợp lệ của bảng.
Bảng có thể có nhiều hơn kèo tỷ số bóng đá euro hôm nay ràng buộc khóa nước ngoài. Điều này được sử dụng để thực hiện các mối quan hệ nhiều đến nhiều giữa các bảng. Giả sử bạn có bảng về sản phẩm và đơn đặt hàng, nhưng bây giờ bạn muốn cho phép kèo tỷ số bóng đá euro hôm nay đơn đặt hàng có thể chứa nhiều sản phẩm (mà cấu trúc trên không cho phép). Bạn có thể sử dụng cấu trúc bảng này:
Tạo sản phẩm bảng ( sản phẩm_no khóa chính số nguyên, tên văn bản, Giá số ); Tạo đơn đặt hàng bảng ( Order_id Số nguyên chính, khóa chính, Text_address văn bản, ... ); Tạo bảng thứ tự_items ( sản phẩm_no kèo tỷ số bóng đá euro hôm nay sản phẩm tham chiếu số nguyên, Order_id Integer TÀI LIỆU THAM KHẢO ĐẶT HÀNG, số lượng số lượng, Khóa chính (sản phẩm_no, order_id) );
Lưu ý rằng khóa chính chồng chéo với kèo tỷ số bóng đá euro hôm nay phím nước ngoài trong bảng cuối cùng.
Chúng tôi biết rằng các khóa nước ngoài không cho phép tạo ra các đơn đặt hàng không liên quan đến bất kỳ sản phẩm nào. Nhưng điều gì sẽ xảy ra nếu kèo tỷ số bóng đá euro hôm nay sản phẩm bị xóa sau khi kèo tỷ số bóng đá euro hôm nay đơn đặt hàng được tạo ra tham chiếu nó? SQL cho phép bạn xử lý điều đó là tốt. Theo trực giác, chúng tôi có kèo tỷ số bóng đá euro hôm nay vài tùy chọn:
Không cho phép xóa sản phẩm được tham chiếu
Xóa kèo tỷ số bóng đá euro hôm nay đơn đặt hàng
cái gì khác?
32924_33112order_items
), chúng tôi không cho phép nó. Nếu ai đó xóa kèo tỷ số bóng đá euro hôm nay đơn đặt hàng, các mục đặt hàng cũng bị xóa:
Tạo sản phẩm bảng ( sản phẩm_no khóa chính số nguyên, tên văn bản, Giá số ); Tạo đơn đặt hàng bảng ( Order_id Số nguyên chính, khóa chính, Text_address văn bản, ... ); Tạo bảng thứ tự_items ( Sản phẩm_NO Tài liệu tham khảo Sản phẩmKhi xóa hạn chế,, Order_id Integer TÀI LIỆU THAM KHẢO Đơn đặt hàngKhi xóa Cascade,, số lượng số lượng, Khóa chính (sản phẩm_no, order_id) );
Hạn chế và xếp tầng xóa là hai tùy chọn phổ biến nhất.Hạn chế
Ngăn chặn việc xóa hàng được tham chiếu.Không hành động
33966_34189Không có hành động
Cho phép kiểm tra được hoãn lại cho đến sau này trong giao dịch, trong khi34320_34330
không.)Cascade
Chỉ định rằng khi kèo tỷ số bóng đá euro hôm nay hàng được tham chiếu bị xóa, hàng tham chiếu, nó cũng sẽ được tự động xóa. Có hai tùy chọn khác:Đặt NULL
vàĐặt mặc định
. Chúng làm cho (các) cột tham chiếu trong (các) cột tham chiếu được đặt thành null hoặc các giá trị mặc định của chúng, tương ứng, khi hàng được tham chiếu bị xóa. Lưu ý rằng những điều này không bào chữa cho bạn khỏi việc quan sát bất kỳ ràng buộc nào. Ví dụ: nếu kèo tỷ số bóng đá euro hôm nay hành động chỉ địnhĐặt mặc định
Nhưng giá trị mặc định sẽ không thỏa mãn kèo tỷ số bóng đá euro hôm nay khóa nước ngoài, hoạt động sẽ thất bại.
35014_35042Khi xóa
Hành động phụ thuộc vào các loại đối tượng mà các bảng liên quan đại diện. Khi bảng tham chiếu đại diện cho kèo tỷ số bóng đá euro hôm nay cái gì đó là kèo tỷ số bóng đá euro hôm nay thành phần của những gì được biểu thị bằng bảng được tham chiếu và không thể tồn tại độc lập, thìCascade
có thể phù hợp. Nếu hai bảng đại diện cho kèo tỷ số bóng đá euro hôm nay đối tượng độc lập, thìHạn chế
hoặcKhông hành động
phù hợp hơn; kèo tỷ số bóng đá euro hôm nay ứng dụng thực sự muốn xóa cả hai đối tượng sau đó sẽ phải rõ ràng về điều này và chạy hai lệnh xóa. Trong ví dụ trên, các mục đặt hàng là kèo tỷ số bóng đá euro hôm nay phần của đơn đặt hàng và thuận tiện nếu chúng bị xóa tự động nếu kèo tỷ số bóng đá euro hôm nay đơn đặt hàng bị xóa. Nhưng các sản phẩm và đơn đặt hàng là những thứ khác nhau, và do đó việc xóa kèo tỷ số bóng đá euro hôm nay sản phẩm tự động gây ra việc xóa kèo tỷ số bóng đá euro hôm nay số mục đặt hàng có thể được coi là có vấn đề. Hành độngĐặt NULL
hoặcĐặt mặc định
36042_36330
kèo tỷ số bóng đá euro hôm nay hành độngĐặt NULL
vàĐặt mặc định
Có thể lấy danh sách cột để chỉ định cột nào để đặt. Thông thường, tất cả các cột của ràng buộc phím nước ngoài được đặt; Đặt kèo tỷ số bóng đá euro hôm nay tập hợp con là hữu ích trong kèo tỷ số bóng đá euro hôm nay số trường hợp đặc biệt. Xem xét ví dụ sau:
Tạo người thuê bảng (
tenant_id số nguyên chính
);
Tạo người dùng bảng (
Tenant_id Integer TÀI LIỆU THAM KHẢO TRỰC TIẾP TRÊN XÓA CASCADE,
Integer user_id không null,
Khóa chính (Tenant_id, user_id)
);
Tạo bài viết trên bảng (
Tenant_id Integer TÀI LIỆU THAM KHẢO TRỰC TIẾP TRÊN XÓA CASCADE,
post_id số nguyên không null,
Tác giả_ID Số nguyên,
Khóa chính (tenant_id, post_id),
Khóa nước ngoài (Tenant_ID, Author_ID) Tài liệu tham khảo về Xóa Set Null(Author_id));
Không có thông số kỹ thuật của cột, phím nước ngoài cũng sẽ đặt cộttenant_id
đến NULL, nhưng cột đó vẫn được yêu cầu như kèo tỷ số bóng đá euro hôm nay phần của khóa chính.
Tương tự nhưtrên xóa
Ngoài ra còn cótrên cập nhật
được gọi khi kèo tỷ số bóng đá euro hôm nay cột được tham chiếu được thay đổi (cập nhật). Các hành động có thể giống nhau, ngoại trừ danh sách cột không thể được chỉ định choSET NULL
vàĐặt mặc định
. Trong trường hợp này,Cascade
có nghĩa là kèo tỷ số bóng đá euro hôm nay giá trị được cập nhật của (kèo tỷ số bóng đá euro hôm nay) cột được tham chiếu phải được sao chép vào (kèo tỷ số bóng đá euro hôm nay) hàng tham chiếu.
Thông thường, kèo tỷ số bóng đá euro hôm nay hàng tham chiếu không cần phải thỏa mãn ràng buộc khóa nước ngoài nếu bất kỳ cột tham chiếu nào của nó là null. Nếu nhưkhớp đầy đủ
Được thêm vào Tuyên bố khóa nước ngoài, kèo tỷ số bóng đá euro hôm nay hàng tham chiếu thoát khỏi việc thỏa mãn ràng buộc chỉ khi tất cả các cột tham chiếu của nó là NULL (do đó, sự kết hợp của các giá trị null và không null được đảm bảo là thất bạikhớp đầy đủ
ràng buộc). Nếu bạn không muốn tham chiếu kèo tỷ số bóng đá euro hôm nay hàng để có thể tránh thỏa mãn ràng buộc khóa nước ngoài, hãy khai báo (kèo tỷ số bóng đá euro hôm nay) cột tham chiếu làkhông null
.
Khóa ngoại phải tham chiếu các cột là khóa chính hoặc tạo thành kèo tỷ số bóng đá euro hôm nay ràng buộc duy nhất hoặc là các cột từ kèo tỷ số bóng đá euro hôm nay chỉ mục độc đáo không có phần. Điều này có nghĩa là các cột được tham chiếu luôn có kèo tỷ số bóng đá euro hôm nay chỉ mục để cho phép tra cứu hiệu quả về việc kèo tỷ số bóng đá euro hôm nay hàng tham chiếu có phù hợp hay không. Kể từ AXóa
của kèo tỷ số bóng đá euro hôm nay hàng từ bảng được tham chiếu hoặcCập nhật
của kèo tỷ số bóng đá euro hôm nay cột được tham chiếu sẽ yêu cầu quét bảng tham chiếu cho các hàng khớp với giá trị cũ, thường là kèo tỷ số bóng đá euro hôm nay ý tưởng tốt để lập chỉ mục các cột tham chiếu. Bởi vì điều này không phải lúc nào cũng cần thiết và có nhiều lựa chọn có sẵn về cách lập chỉ mục, nên việc khai báo ràng buộc khóa nước ngoài không tự động tạo kèo tỷ số bóng đá euro hôm nay chỉ mục trên các cột tham chiếu.
Thông tin thêm về việc cập nhật và xóa dữ liệu là trongChương 639433_39530Tạo bảng.
40017_40237
Tạo vòng tròn bảng ( vòng tròn c, Loại trừ bằng cách sử dụng gist (c với &&) );
Xem thêmTạo bảng ... kèo tỷ số bóng đá euro hôm nay ... loại trừ
Để biết chi tiết.
Thêm ràng buộc loại trừ sẽ tự động tạo kèo tỷ số bóng đá euro hôm nay chỉ mục thuộc loại được chỉ định trong khai báo ràng buộc.
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 khớ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.