Column bị read-only trong SQL

Xin chào mọi người. Em đang làm 1 phần mềm quản lý khách hàng nhỏ, Em sử dụng Python 3 và PostgreSQL. Em gặp vấn đề ngay ở khâu đầu tiên là tạo bảng.
Em tạo các bảng khách hàng, loại điều trị, và bác sĩ. Sau đó tạo bảng hoá đơn với khoá ngoại từ các bảng trước đó. Tạo bảng xong, thì tất cả các column trong bảng Hoá đơn đều read-only. không thể nhập dữ liệu. Mong mọi người giúp đỡ để em có thể thêm dữ liệu vào bảng Hoá đơn.
Đây là code SQL của em

-- Table: public.hoadon
-- DROP TABLE public.hoadon;
CREATE TABLE public.hoadon
(
    id integer NOT NULL,
    version integer NOT NULL,
    ten text COLLATE pg_catalog."default" NOT NULL,
    sodt integer NOT NULL,
    loaidieutri text COLLATE pg_catalog."default" NOT NULL,
    soluong integer NOT NULL,
    giatien integer NOT NULL,
    lichhen1 text COLLATE pg_catalog."default" NOT NULL,
    lichhen2 text COLLATE pg_catalog."default" NOT NULL,
    lichhen3 text COLLATE pg_catalog."default" NOT NULL,
    tralan1 integer NOT NULL,
    tralan2 integer NOT NULL,
    tralan3 integer NOT NULL,
    status text COLLATE pg_catalog."default" NOT NULL,
    khuyenmai integer NOT NULL,
    ghichu text COLLATE pg_catalog."default" NOT NULL,
    date text COLLATE pg_catalog."default" NOT NULL,
    doctor integer NOT NULL,
    CONSTRAINT dieutri_fk FOREIGN KEY (loaidieutri)
        REFERENCES public.loaidieutri (loaidieutri) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT doctor_fk FOREIGN KEY (doctor)
        REFERENCES public.bacsi (id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT khachhang_fk FOREIGN KEY (sodt, ten)
        REFERENCES public.khachhang (sodt, ten) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)
TABLESPACE pg_default;
ALTER TABLE public.hoadon
    OWNER to postgres;

Table này đang reference tới 3 tables khác.
Như vậy, dữ liệu nhập vào phải bảo đảm giá trị reference đã có trong các tables “cha”.

Vd: Nhập vào 1 record có giá trị cho field ‘doctor’=1
Thì trong table BACSI phải có 1 row có giá trị ID=1

Tương tự cho 2 tables kia.

Ko liên quan, nhưng gợi ý là nếu dùng tiếng Anh thì Anh hết, đừng chơi nửa này nửa kia!

5 Likes

Ủng hộ ! Một là eng hết 2 là vn hết toàn bộ. Cứ eng rồi vn ko biết khi nào lần.

1 Like

Em đã thử nhập liệu vào tất cả các bảng tham chiếu, thì nhập vào được, column có dấu cây bút.


Tuy nhiên khi sang bảng Hoá đơn như trên, cột có dấu khoá, không thể nhập vào được gì hết, chứ chưa nói tới tham chiếu hay không.

Về phần tiếng Anh/tiếng Việt, em sẽ chú ý sự thống nhất. Xin cám ơn anh ah.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?