Để thêm một ràng buộc vào một cột Nó cần phải tồn tại trước tiên trong bảng , không có lệnh nào trong Postgresql mà bạn có thể sử dụng để thêm cột và thêm ràng buộc cùng một lúc. Nó phải là hai lệnh riêng biệt. Bạn có thể làm điều đó bằng cách sử dụng các lệnh sau:
Đầu tiên hãy làm như:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Tôi sử dụng integer
như loại ở đây nhưng nó phải là cùng loại của id
cột của auth_user
bảng.
Sau đó, bạn thêm ràng buộc
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
một phần của lệnh này là đặt tên ràng buộc của bạn, vì vậy nếu sau này bạn cần ghi lại nó bằng một số công cụ tạo mô hình của bạn, bạn sẽ có một ràng buộc được đặt tên thay vì một tên ngẫu nhiên.
Ngoài ra, nó phục vụ cho các mục đích của quản trị viên để A DBA biết rằng ràng buộc là từ bảng đó.
Thông thường, chúng tôi đặt tên nó với một số gợi ý về nguồn gốc của nó và nơi nó tham chiếu trong trường hợp của bạn, nó sẽ là fk_links_chatpicmessage_auth_user
vì vậy bất kỳ ai nhìn thấy tên này sẽ biết chính xác ràng buộc này là gì mà không cần thực hiện truy vấn phức tạp trên INFORMATION_SCHEMA để tìm hiểu.
CHỈNH SỬA
Như đã đề cập trong câu trả lời của @ btubbs, bạn thực sự có thể thêm một cột với một ràng buộc trong một lệnh. Như vậy:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);