Ho 2 tabelle come vedrete nel mio codice posgresql di seguito. Gli studenti della prima tabella hanno 2 colonne, una per student_name e l'altra student_id che è la chiave primaria. Nella mia seconda tabella chiamata test, questo ha 4 colonne, una per subject_id, una per il subject_name, quindi una per uno studente con il punteggio più alto in un soggetto che è highestStudent_id. Sto cercando di rendere highestStudent_id riferirsi a student_id nella mia tabella studenti. Questo è il codice che ho seguito, non so se la sintassi è corretta:sintassi di chiave esterna 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);
è la sintassi corretta highestStudent_id SERIAL REFERENCES students
? perché ne ho visto un altro come highestStudent_id REFERENCES students(student_id))
Quale sarebbe il modo corretto di creare la chiave esterna in postgresql per favore?
Sì la sintassi è "corretta". Tuttavia la colonna FK dovrebbe ** non ** essere definita come 'seriale', dovrebbe essere definita come' intero '. 'serial' non è un tipo di dati" reale ", è una mano breve per popolare il valore predefinito dalla sequenza –
Se l'FK fa riferimento a una chiave primaria, non sono necessarie colonne. Se l'FK fa riferimento a una chiave alternativa, sono necessarie le colonne. – jarlh
@a_horse_with_no_name intendi in questo modo: highestStudent_id numero intero REFERENCES player – Hamza