Bảng tháng html
Nếu được chỉ định, bảng được tạo dưới dạng bảng tạm thời. Các bảng tạm thời sẽ tự động bị hủy vào cuối phiên hoặc tùy chọn vào cuối giao dịch hiện tại (xem Không thể truy cập và do đó không thể hút bụi hoặc phân tích các bảng tạm thời. Vì lý do này, các hoạt động phân tích và chân không thích hợp nên được thực hiện thông qua các lệnh SQL phiên. Ví dụ: nếu một bảng tạm thời sẽ được sử dụng trong các truy vấn phức tạp, bạn nên chạy Tùy ý, có thể viết UNLOGGED Nếu được chỉ định, bảng sẽ được tạo dưới dạng bảng chưa ghi nhật ký. Dữ liệu được ghi vào các bảng chưa được ghi sẽ không được ghi vào nhật ký ghi trước (xem Chương 30), điều này làm cho chúng nhanh hơn đáng kể so với các bảng thông thường. Tuy nhiên, chúng không an toàn khi gặp sự cố. một bảng chưa được ghi nhật ký sẽ tự động bị cắt bớt sau khi gặp sự cố hoặc tắt máy không sạch sẽ. Nội dung của một bảng chưa ghi nhật ký cũng không được sao chép sang các máy chủ dự phòng. Bất kỳ chỉ mục nào được tạo trên một bảng chưa được ghi cũng sẽ tự động được hủy ghi Nếu điều này được chỉ định, bất kỳ trình tự nào được tạo cùng với bảng chưa ghi nhật ký (đối với các cột nhận dạng hoặc nối tiếp) cũng được tạo dưới dạng không ghi nhật ký IF NOT EXISTS Không ném lỗi nếu một quan hệ có cùng tên đã tồn tại. Một thông báo được đưa ra trong trường hợp này. Lưu ý rằng không có gì đảm bảo rằng mối quan hệ hiện tại giống như mối quan hệ đã được tạo TEMP 0Tên (tùy chọn đủ điều kiện lược đồ) của bảng sẽ được tạo TEMP 1Tạo một bảng đã nhập, lấy cấu trúc của nó từ loại tổng hợp đã chỉ định (tên tùy chọn đủ điều kiện cho lược đồ). Một bảng đã nhập được gắn với loại của nó; Khi một bảng đã nhập được tạo, thì kiểu dữ liệu của các cột được xác định bởi kiểu tổng hợp bên dưới và không được chỉ định bởi lệnh TEMP 5Tên của một cột sẽ được tạo trong bảng mới TEMP 6Kiểu dữ liệu của cột. Điều này có thể bao gồm các chỉ định mảng. Để biết thêm thông tin về các loại dữ liệu được PostgreSQL hỗ trợ, hãy tham khảo Chương 8 TEMP 7Mệnh đề TEMP 9Mệnh đề ON COMMIT 9 [,. ] )Mệnh đề Việc sử dụng Nếu cùng một tên cột tồn tại trong nhiều bảng cha, lỗi sẽ được báo cáo trừ khi kiểu dữ liệu của các cột khớp với nhau trong mỗi bảng cha. Nếu không có xung đột thì các cột trùng lặp sẽ được hợp nhất để tạo thành một cột duy nhất trong bảng mới. Nếu danh sách tên cột của bảng mới chứa tên cột cũng được kế thừa, thì kiểu dữ liệu cũng phải khớp với (các) cột được kế thừa và các định nghĩa cột được hợp nhất thành một. Nếu bảng mới chỉ định rõ ràng một giá trị mặc định cho cột, giá trị mặc định này sẽ ghi đè mọi giá trị mặc định từ các khai báo kế thừa của cột. Nếu không, bất kỳ cha mẹ nào chỉ định giá trị mặc định cho cột đều phải chỉ định cùng một giá trị mặc định, nếu không sẽ báo lỗi Các ràng buộc của Cài đặt cột Nếu một cột trong bảng cha là cột nhận dạng, thì thuộc tính đó không được kế thừa. Một cột trong bảng con có thể được khai báo cột nhận dạng nếu muốn PHÂN VÙNG THEO { RANGE. DANH SÁCH. Băm } ( { Mệnh đề tùy chọn Phân vùng phạm vi và danh sách yêu cầu lớp toán tử btree, trong khi phân vùng băm yêu cầu lớp toán tử băm. Nếu không có lớp toán tử nào được chỉ định rõ ràng, thì lớp toán tử mặc định của loại thích hợp sẽ được sử dụng; . Khi sử dụng phân vùng băm, lớp toán tử được sử dụng phải triển khai chức năng hỗ trợ 2 (xem để biết chi tiết) Một bảng được phân vùng được chia thành các bảng con (được gọi là phân vùng), được tạo bằng cách sử dụng các lệnh Các bảng được phân vùng không hỗ trợ các ràng buộc Xem Phần 5. 11 để thảo luận thêm về phân vùng bảng GLOBAL 3 { CHO GIÁ TRỊ GLOBAL 4. MẶC ĐỊNH }Tạo bảng dưới dạng phân vùng của bảng cha được chỉ định. Bảng có thể được tạo dưới dạng phân vùng cho các giá trị cụ thể bằng cách sử dụng
Khi tạo phân vùng danh sách, có thể chỉ định Khi tạo phân vùng phạm vi, giới hạn dưới được chỉ định bằng Các giá trị đặc biệt Khi tạo một phân vùng phạm vi bao gồm nhiều hơn một cột, bạn cũng có thể sử dụng Lưu ý rằng nếu Cũng lưu ý rằng một số loại phần tử, chẳng hạn như Nếu Khi một bảng có phân vùng Khi tạo phân vùng băm, phải chỉ định mô đun và phần dư. Mô đun phải là một số nguyên dương và phần còn lại phải là một số nguyên không âm nhỏ hơn mô đun. Thông thường, khi thiết lập ban đầu một bảng được phân vùng bằng hàm băm, bạn nên chọn một mô-đun bằng với số lượng phân vùng và gán cho mỗi bảng cùng một mô-đun và một phần còn lại khác nhau (xem ví dụ bên dưới). Tuy nhiên, không bắt buộc mọi phân vùng phải có cùng một mô đun, chỉ là mọi mô đun xảy ra giữa các phân vùng của bảng được phân vùng băm là một hệ số của mô đun lớn hơn tiếp theo. Điều này cho phép tăng dần số lượng phân vùng mà không cần di chuyển tất cả dữ liệu cùng một lúc. Ví dụ: giả sử bạn có một bảng phân vùng băm với 8 phân vùng, mỗi phân vùng có mô đun 8, nhưng thấy cần phải tăng số lượng phân vùng lên 16. Bạn có thể tách một trong các phân vùng theo mô-đun-8, tạo hai phân vùng theo mô-đun-16 mới bao phủ cùng một phần của không gian khóa (một phân vùng có phần còn lại bằng với phần còn lại của phân vùng đã tách và phân vùng còn lại có phần còn lại bằng với giá trị đó . Sau đó, bạn có thể lặp lại điều này - có lẽ sau này - cho mỗi phân vùng modulus-8 cho đến khi không còn phân vùng nào. Mặc dù điều này vẫn có thể liên quan đến một lượng lớn dữ liệu di chuyển ở mỗi bước, nhưng vẫn tốt hơn là phải tạo một bảng hoàn toàn mới và di chuyển tất cả dữ liệu cùng một lúc Một phân vùng phải có cùng tên và loại cột với bảng được phân vùng mà nó thuộc về. Các sửa đổi đối với tên cột hoặc loại của bảng được phân vùng sẽ tự động lan truyền đến tất cả các phân vùng. Các ràng buộc Các hàng được chèn vào một bảng được phân vùng sẽ tự động được chuyển đến đúng phân vùng. Nếu không có phân vùng phù hợp thì sẽ xảy ra lỗi Các hoạt động như TRUNCATE thường ảnh hưởng đến một bảng và tất cả các phần tử con thừa kế của nó sẽ xếp tầng cho tất cả các phân vùng, nhưng cũng có thể được thực hiện trên một phân vùng riêng lẻ. Lưu ý rằng việc xóa một phân vùng bằng IF NOT EXISTS 2 [ IF NOT EXISTS 3. ]Mệnh đề Không giống như Cũng không giống như Các mệnh đề
Nhận xét cho các cột, ràng buộc và chỉ mục đã sao chép sẽ được sao chép. Hành vi mặc định là loại trừ nhận xét, dẫn đến các cột và ràng buộc được sao chép trong bảng mới không có nhận xét TEMP 04Phương pháp nén của các cột sẽ được sao chép. Hành vi mặc định là loại trừ các phương thức nén, dẫn đến các cột có phương thức nén mặc định TEMP 05
TEMP 07Các biểu thức mặc định cho các định nghĩa cột được sao chép sẽ được sao chép. Mặt khác, các biểu thức mặc định không được sao chép, dẫn đến các cột được sao chép trong bảng mới có giá trị mặc định là null. Lưu ý rằng việc sao chép các giá trị mặc định gọi hàm sửa đổi cơ sở dữ liệu, chẳng hạn như TEMP 09Mọi biểu thức tạo định nghĩa cột được sao chép sẽ được sao chép. Theo mặc định, các cột mới sẽ là các cột cơ sở thông thường TEMP 10Mọi thông số nhận dạng của định nghĩa cột được sao chép sẽ được sao chép. Một trình tự mới được tạo cho mỗi cột nhận dạng của bảng mới, tách biệt với các trình tự được liên kết với bảng cũ TEMP 11Các ràng buộc chỉ mục, TEMP 15Số liệu thống kê mở rộng được sao chép sang bảng mới TEMP 16Cài đặt TEMP 20
Mệnh đề TEMP 26Tên tùy chọn cho ràng buộc cột hoặc bảng. Nếu ràng buộc bị vi phạm, tên ràng buộc sẽ xuất hiện trong các thông báo lỗi, do đó, các tên ràng buộc như TEMP 28Cột không được phép chứa giá trị null LOCAL 4Cột được phép chứa giá trị null. Đây là mặc định Điều khoản này chỉ được cung cấp để tương thích với cơ sở dữ liệu SQL không chuẩn. Việc sử dụng nó không được khuyến khích trong các ứng dụng mới KIỂM TRA ( Mệnh đề Hiện tại, các biểu thức Một ràng buộc được đánh dấu bằng Khi một bảng có nhiều ràng buộc TEMP 38Mệnh đề Biểu thức mặc định sẽ được sử dụng trong bất kỳ thao tác chèn nào không chỉ định giá trị cho cột. Nếu không có giá trị mặc định cho một cột thì giá trị mặc định là null TEMP 40 ) ĐÃ LƯU TRỮMệnh đề này tạo cột dưới dạng cột được tạo. Không thể ghi cột vào và khi đọc kết quả của biểu thức đã chỉ định sẽ được trả về Từ khóa Biểu thức tạo có thể tham chiếu đến các cột khác trong bảng, nhưng không tham chiếu đến các cột được tạo khác. Mọi chức năng và toán tử được sử dụng phải là bất biến. Tham chiếu đến các bảng khác không được phép TEMP 42 ) ]Mệnh đề này tạo cột dưới dạng cột nhận dạng. Nó sẽ có một chuỗi ẩn được đính kèm với nó và cột trong các hàng mới sẽ tự động có các giá trị từ chuỗi được gán cho nó. Một cột như vậy hoàn toàn là Các mệnh đề Trong lệnh Trong lệnh Mệnh đề TEMP 61 (ràng buộc cột)ĐỘC NHẤT [ NULLS [ NOT ] DISTINCT ] ( [ BAO GỒM ( ] (ràng buộc bảng)Ràng buộc Vì mục đích của một ràng buộc duy nhất, các giá trị null không được coi là bằng nhau, trừ khi chỉ định Mỗi ràng buộc duy nhất phải đặt tên cho một tập hợp các cột khác với tập hợp các cột được đặt tên bởi bất kỳ ràng buộc khóa chính hoặc duy nhất nào khác được xác định cho bảng. (Nếu không, các ràng buộc duy nhất dư thừa sẽ bị loại bỏ. ) Khi thiết lập một ràng buộc duy nhất cho hệ thống phân cấp phân vùng đa cấp, tất cả các cột trong khóa phân vùng của bảng được phân vùng đích, cũng như cột của tất cả các bảng được phân vùng con của nó, phải được đưa vào định nghĩa ràng buộc Việc thêm một ràng buộc duy nhất sẽ tự động tạo một chỉ mục btree duy nhất trên cột hoặc nhóm cột được sử dụng trong ràng buộc Mệnh đề TEMP 12 (ràng buộc cột)Khóa CHÍNH ( [ BAO GỒM ( ] (ràng buộc bảng)Ràng buộc Ràng buộc khóa chính phải đặt tên cho một tập hợp các cột khác với tập hợp các cột được đặt tên bởi bất kỳ ràng buộc duy nhất nào được xác định cho cùng một bảng. (Ngược lại, ràng buộc duy nhất là dư thừa và sẽ bị loại bỏ. )
Khi được đặt trên một bảng được phân vùng, các ràng buộc Việc thêm ràng buộc Mệnh đề TEMP 80 ] ( TEMP 81 VỚI TEMP 82 [,. ] ) TEMP 83 [ Ở ĐÂU ( TEMP 84 ) ]Mệnh đề Các ràng buộc loại trừ được triển khai bằng cách sử dụng một chỉ mục, vì vậy, mỗi toán tử được chỉ định phải được liên kết với một lớp toán tử thích hợp (xem Phần 11. 10) cho phương thức truy cập chỉ mục Phương thức truy cập phải hỗ trợ
TEMP 93 [ ( TEMP 94 ) ] [ MATCH TEMP 95 ] [ BẬT DELETE TEMP 96 ] [ BẬT CẬP NHẬT TEMP 96 ] (ràng buộc cột)FOREIGN KEY ( (ràng buộc bảng)Các mệnh đề này chỉ định một ràng buộc khóa ngoại, yêu cầu rằng một nhóm gồm một hoặc nhiều cột của bảng mới chỉ được chứa các giá trị khớp với các giá trị trong (các) cột được tham chiếu của một số hàng của bảng được tham chiếu. Nếu danh sách Một giá trị được chèn vào (các) cột tham chiếu được đối sánh với các giá trị của bảng được tham chiếu và các cột được tham chiếu bằng cách sử dụng loại đối sánh đã cho. Có ba loại đối sánh. Ngoài ra, khi dữ liệu trong các cột được tham chiếu thay đổi, một số hành động nhất định sẽ được thực hiện trên dữ liệu trong các cột của bảng này. Mệnh đề
Tạo lỗi cho biết việc xóa hoặc cập nhật sẽ tạo ra sự vi phạm ràng buộc khóa ngoại. Nếu ràng buộc bị trì hoãn, lỗi này sẽ được tạo ra tại thời điểm kiểm tra ràng buộc nếu vẫn tồn tại bất kỳ hàng tham chiếu nào. Đây là hành động mặc định ON COMMIT 19Tạo lỗi cho biết việc xóa hoặc cập nhật sẽ tạo ra sự vi phạm ràng buộc khóa ngoại. Điều này giống như ON COMMIT 21Xóa mọi hàng tham chiếu đến hàng đã xóa hoặc cập nhật giá trị của (các) cột tham chiếu thành giá trị mới của các cột được tham chiếu tương ứng ĐẶT NULL [ ( Đặt tất cả các cột tham chiếu hoặc một tập hợp con được chỉ định của các cột tham chiếu thành null. Chỉ có thể chỉ định một tập hợp con các cột cho các hành động ĐẶT MẶC ĐỊNH [ ( Đặt tất cả các cột tham chiếu hoặc một tập hợp con cụ thể của các cột tham chiếu thành giá trị mặc định của chúng. Chỉ có thể chỉ định một tập hợp con các cột cho các hành động Nếu (các) cột được tham chiếu bị thay đổi thường xuyên, thì nên thêm một chỉ mục vào (các) cột tham chiếu để các hành động tham chiếu được liên kết với ràng buộc khóa ngoại có thể được thực hiện hiệu quả hơn ON COMMIT 26ON COMMIT 27Điều này kiểm soát xem ràng buộc có thể được hoãn lại hay không. Một ràng buộc không thể trì hoãn sẽ được kiểm tra ngay sau mỗi lệnh. Việc kiểm tra các ràng buộc có thể trì hoãn có thể được hoãn lại cho đến khi kết thúc giao dịch (sử dụng lệnh ON COMMIT 38ON COMMIT 39Nếu một ràng buộc có thể hoãn lại, điều khoản này chỉ định thời gian mặc định để kiểm tra ràng buộc. Nếu ràng buộc là ON COMMIT 43Mệnh đề tùy chọn này chỉ định phương thức truy cập bảng sẽ sử dụng để lưu trữ nội dung cho bảng mới; . Xem Chương 63 để biết thêm thông tin. Nếu tùy chọn này không được chỉ định, phương thức truy cập bảng mặc định sẽ được chọn cho bảng mới. Xem để biết thêm thông tin ON COMMIT 45 [= ON COMMIT 46] [,. ] )Mệnh đề này chỉ định các tham số lưu trữ tùy chọn cho một bảng hoặc chỉ mục; . Để tương thích ngược, mệnh đề ON COMMIT 50Đây là cú pháp tương thích ngược để khai báo bảng ON COMMIT Hành vi của các bảng tạm thời ở cuối khối giao dịch có thể được kiểm soát bằng cách sử dụng
Không có hành động đặc biệt nào được thực hiện khi kết thúc giao dịch. Đây là hành vi mặc định ON COMMIT 56Tất cả các hàng trong bảng tạm thời sẽ bị xóa vào cuối mỗi khối giao dịch. Về cơ bản, một ON COMMIT 58Bảng tạm thời sẽ bị hủy ở cuối khối giao dịch hiện tại. Khi được sử dụng trên một bảng được phân vùng, hành động này sẽ loại bỏ các phân vùng của nó và khi được sử dụng trên các bảng có phần tử con kế thừa, nó sẽ loại bỏ các phần tử con phụ thuộc ON COMMIT 59
SỬ DỤNG INDEX TABLESPACE Mệnh đề này cho phép lựa chọn không gian bảng trong đó chỉ mục được liên kết với ràng buộc |