Tôi có 2 bảng như bạn sẽ thấy trong mã posgresql bên dưới. Học sinh bảng đầu tiên có 2 cột, một cho student_name và student_id khác là khóa chính. Trong bảng thứ hai của tôi được gọi là kiểm tra, điều này có 4 cột, một cột cho subject_id, một cho subject_name, sau đó một cho một sinh viên với điểm số cao nhất trong một chủ đề là highStudent_id. đang cố gắng để làm cho higherStudent_id tham khảo student_id trong bảng học sinh của tôi. Đây là mã tôi có bên dưới, không chắc liệu cú pháp có đúng không:cú pháp khóa ngoài bằng postgresql
CREATE TABLE students (student_id SERIAL PRIMARY KEY,
player_name TEXT);
CREATE TABLE tests (subject_id SERIAL,
subject_name,
highestStudent_id SERIAL REFERENCES students);
là cú pháp highestStudent_id SERIAL REFERENCES students
đúng? bởi vì tôi đã thấy một số khác như highestStudent_id REFERENCES students(student_id))
Cách chính xác để tạo khóa ngoại trong postgresql là gì?
Có cú pháp là "đúng". Tuy nhiên, cột FK nên ** không ** được định nghĩa là 'nối tiếp', nó phải được định nghĩa là' số nguyên'. 'serial' không phải là kiểu dữ liệu" thực ", đó là một tay ngắn để điền giá trị mặc định từ chuỗi –
Nếu FK tham chiếu khóa chính, không cần cột nào. Nếu FK tham chiếu một khóa thay thế, các cột là cần thiết. – jarlh
@a_horse_with_no_name bạn có ý nghĩa như thế này: số nguyên cao nhấtSTINENT_id TÀI LIỆU THAM KHẢO Người chơi – Hamza