2012-03-15 39 views
47

Tôi đã tự hỏi một số có thể cho tôi một lời giải thích về cách gán các khóa chính và khóa ngoài trong pgAdmin?Các khóa chính và khóa ngoài trong pgAdmin

Tôi không thể tìm thấy bất kỳ thông tin trực tuyến nào.

Ví dụ ... Tôi có bảng Sinh viên với tất cả chi tiết của họ (địa chỉ, d.o.b. và v.v.). Tôi sẽ thêm một student_number vào bảng và làm cho nó một khóa chính.

Tôi chỉ muốn biết làm cách nào để thực hiện điều đó bằng pgAdmin? Và nếu bạn có thể giải thích cho tôi thêm thông tin về việc sử dụng các khóa chính trong postgreSQL (và pgAdmin). Trường hợp tương tự với các khóa ngoại.

+0

Mọi trợ giúp đều tuyệt vời. :) –

Trả lời

20

Không có tùy chọn nào trong pgAdmin để thêm cột vào bảng hiện có và đặt nó làm khóa chính cùng một lúc vì điều này khó có thể thực hiện được.

Cột khóa chính cần giữ các giá trị không null duy nhất. Khi thêm một cột vào bảng hiện có, nó giữ giá trị NULL. Vì vậy, bạn phải nhập các giá trị duy nhất trước khi bạn có thể thêm một ràng buộc UNIQUE hoặc PRIMARY KEY.

Tuy nhiên, có ngoại lệ cho quy tắc đó: Nếu bạn thêm một cột serial, giá trị duy nhất sẽ được chèn tự động. Trong trường hợp này, bạn cũng có thể xác định nó CHÍNH THỨC KEY ngay lập tức:

ALTER TABLE student ADD COLUMN student_number serial PRIMARY KEY; 

Điều này làm việc trong PostgreSQL 9.1. Tôi cũng không chắc chắn về nó trong các phiên bản cũ.

pgAdmin không kết hợp trường hợp đặc biệt này cho các cột serial trong hộp thoại "Cột mới ..." tại thời điểm này (phiên bản 1.14).

+0

Cảm ơn thông tin Erwin. –

+1

xem Victor Barrantes câu trả lời, n có vẻ như ông theeth khám phá pgadmin vì vậy có rất ít cơ hội ông rơi vào kịch bản bạn mô tả ở đây, mặc dù câu trả lời của bạn là rất interressant. –

95

Có, có một cách để thêm Primary & Khóa ngoại trong pgAdmin.

Tested trong pgAdmin III Ver.1.16.1 (Windows 7)

  1. Chọn bảng mà bạn muốn
  2. Ctrl +Alt +Nhập hoặc nhấp chuột phải/Thuộc tính
  3. Chọn tab "Hạn chế"
  4. Ở phía dưới cùng bên trái của biểu mẫu, bạn sẽ thấy tùy chọn "Khóa chính"
  5. Bấm thêm
  6. Chọn "Cột" tab
  7. Chọn cột mà bạn muốn như một chìa khóa
  8. Bấm thêm

Và bạn là tất cả bộ.

Bạn có thể điền nhiều thứ hơn nếu muốn, nhưng bây giờ bạn biết cách đến đó.

+0

Điều này có thêm một khóa vào bảng, hoặc chỉ trong PGadmin không? Nếu đó là thông tin trước, không phải mọi thứ sẽ bị phá vỡ trong ứng dụng của bạn? Phương pháp này thêm một ràng buộc, không phải là một cột, vì vậy nó có an toàn không? – ahnbizcad

+3

Đọc lại 6. và 7. (Cột đã tồn tại trong bảng) –

+0

hoạt động tốt – docesam

0

dưới đây SQL sẽ làm việc

SELECT 
    tc.constraint_name, tc.table_name, kcu.column_name, 
    ccu.table_name AS foreign_table_name, 
    ccu.column_name AS foreign_column_name 
FROM 
    information_schema.table_constraints AS tc 
    JOIN information_schema.key_column_usage AS kcu 
     ON tc.constraint_name = kcu.constraint_name 
    JOIN information_schema.constraint_column_usage AS ccu 
     ON ccu.constraint_name = tc.constraint_name 
WHERE constraint_type = 'PRIMARY KEY' AND tc.table_name='table_name'; 
0

Trong Pgadmin3,

  1. Tới bảng mà bạn muốn thêm PK hoặc FK và click chuột phải và chọn Properties.
  2. Chuyển đến tab ràng buộc.
  3. Chọn khóa chính hoặc khóa ngoài trong danh sách thả xuống bên cạnh nút Thêm.
  4. Và hơn nhấp vào nút thêm.
  5. Chuyển đến tab cột.
  6. Chọn tên cột trong danh sách thả xuống mà bạn muốn thêm.
  7. Nhấp vào nút thêm.
  8. Nhấp vào nút Ok.

    Hy vọng nó sẽ hữu ích cho bạn!

Các vấn đề liên quan