Danh sách Tutorial

[PostgreSQL] Định nghĩa và quản lý khóa chính – Primary Key


Khóa chính (Primary Key) là gì?

Khóa chính là một cột (column) hoặc một nhóm các cột được sử dụng để xác định một hàng (row) duy nhất trong một bảng.

Bạn định nghĩa khóa chính thông qua các ràng buộc khóa chính (primary key constraints). Về mặt kỹ thuật, một ràng buộc khóa chính là sự kết hợp của ràng buộc không null và ràng buộc Unique.

Định nghĩa khóa chính khi tạo bảng

Khi tạo 1 bảng CSDL trong PostgreSQL chúng ta sử dụng keywork là PRIMARY KEY để tạo khóa chính

CREATE TABLE public.groups
(
    group_id integer NOT NULL PRIMARY KEY,
    group_name character varying COLLATE pg_catalog."default" NOT NULL,
    created_at timestamp without time zone NOT NULL,
    updated_at timestamp without time zone,
    deleted_at timestamp without time zone
)

Hoặc tạo 1 CONSTRAINT như sau:

CREATE TABLE public.groups
(
    group_id integer NOT NULL,
    group_name character varying COLLATE pg_catalog."default" NOT NULL,
    created_at timestamp without time zone NOT NULL,
    updated_at timestamp without time zone,
    deleted_at timestamp without time zone,
    CONSTRAINT groups_pkey PRIMARY KEY (group_id)
)

Kết quả:

Trường hợp muốn tạo bảng CSDL với 2 khóa chính thì chúng ta sử dụng CONSTRAINT để tạo như sau:

CREATE TABLE product (
   product_no INTEGER,
   item_no INTEGER,   
   qty INTEGER,
   price NUMERIC,
   PRIMARY KEY (product_no, item_no)
);

Kết quả:

Thêm khóa chính cho 1 bảng CSDL

Để thêm 1 khóa chính vào 1 bảng đã tồn tại chúng là sử dụng lệnh SQL: ALTER TABLE với ADD PRIMARY KEY

ALTER TABLE table_name ADD PRIMARY KEY (column_1, column_2);

Ví dụ: Tạo bảng products và thêm 2 khóa chỉnh product_no_1, product_no_2

CREATE TABLE products (
   product_no_1 INTEGER,
   product_no_2 INTEGER,
   description TEXT
);
ALTER TABLE public.products ADD PRIMARY KEY (product_no_1, product_no_2);

Kết quả:

Xóa khóa chính của bảng CSDL

Để xóa khóa chính của 1 bảng chúng ta sử dụng lệnh SQL: ALTER TABLE với DROP CONSTRAINT

ALTER TABLE table_name DROP CONSTRAINT primary_key_constraint;

Ví dụ: Xóa khóa chính của bảng products có rằng buộc constraint tên là: products_pkey

ALTER TABLE public.products DROP CONSTRAINT products_pkey;

Kết quả:

 

 

SHARE

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web