PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tên Ràng buộc Mặc định trong PostgreSQL là gì?

Vấn đề:

Bạn muốn biết tên mặc định của các ràng buộc trong bảng trong PostgreSQL.

Ví dụ:

Trong cơ sở dữ liệu của chúng tôi, chúng tôi tạo hai bảng, countrystudent , với các ràng buộc sau:PRIMARY KEY (cột id trong các bảng countrystudent ), FOREIGN KEY (cột country_id trong bảng student ), DEFAULT (cột name trong bảng student ), UNIQUE (cột name trong bảng country và cột personal_number trong bảng student ) và CHECK (cột age trong bảng student ).

Giải pháp:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) references country(id)
);

Hãy hiển thị cách PostgreSQL đặt tên cho các ràng buộc của các bảng này theo mặc định. Sử dụng truy vấn này để xem chúng:

SELECT conname, contype
FROM pg_catalog.pg_constraint;

Đây là kết quả:

tên con contype
country_pkey p
country_name_key u
student_age_check c
student_pkey p
student_personal_number_key u
student_country_id_fkey f

Thảo luận:

Khi chúng tôi tạo bảng của mình, chúng tôi đặt các ràng buộc cho một số cột. Tuy nhiên, chúng tôi không chỉ định tên cho các ràng buộc này, vì vậy chúng được đặt tên theo mặc định trong PostgreSQL. Tên mặc định cho các ràng buộc được tạo như thế nào?

Trong PostgreSQL, các loại ràng buộc mặc định là p , f , uc .

PRIMARY KEY được đặt tên theo mặc định với tên bảng, một dấu gạch dưới (‘_ ’) Và‘ pkey '. Trong bảng kết quả của chúng tôi ở trên, bạn có thể thấy hai PRIMARY KEY tên (nhập ‘p ’) - một cái tên country_pkeycountry bảng và bảng khác có tên student_pkey trong student bảng.

FOREIGN KEY được chỉ ra bởi loại ràng buộc ‘f '. Tên của nó được tạo bởi tên của bảng hiện tại, một dấu gạch dưới (‘_ ’), Tên cột, một dấu gạch dưới khác (‘ _ ’) Và‘ fkey '. Trong ví dụ của chúng tôi, tên của ràng buộc khóa ngoại là student_country_id_fkey , vì cột country_id trong bảng student là một khóa ngoại.

Tên mặc định cho CHECK ràng buộc tương tự như khóa ngoại, chỉ khác là nó thuộc loại ràng buộc ‘c '. Trong ví dụ của chúng tôi, cột age trong bảng student có ràng buộc này, vì vậy tên ràng buộc mặc định là student_age_check .

Tên mặc định cho UNIQUE ràng buộc (nhập ‘u ’) Là tên bảng, một dấu gạch dưới (‘ _ ’), Tên cột, một dấu gạch dưới khác (‘ _ ’) Và‘ key '. Trong ví dụ của chúng tôi, bảng studentUNIQUE ràng buộc có tên student_personal_number_key . Đối với nhiều cột trong một ràng buộc, tên tuân theo một quy ước tương tự nhưng chứa tên của tất cả các cột trong định nghĩa của ràng buộc.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để di chuyển cơ sở dữ liệu PostgreSQL sang SQLServer?

  2. hasMany được gọi với một cái gì đó không phải là một phiên bản của Sequelize.Model

  3. Cách Log () hoạt động trong PostgreSQL

  4. PHP không tải php_pgsql.dll trên Windows

  5. JDBCTemplate đặt POJO lồng nhau với BeanPropertyRowMapper