2012-03-15 13 views
47

Mi chiedevo se alcuni possono darmi una spiegazione su come assegnare chiavi primarie e esterne in pgAdmin?Chiavi primarie e esterne in pgAdmin

Non riesco a trovare nessuna informazione online.

Ad esempio ... Ho una tabella degli studenti con tutti i loro dettagli (indirizzo, indirizzo e così via). Aggiungerò uno studente numero al tavolo e ne farò una chiave primaria.

Voglio solo sapere come faccio a utilizzare pgAdmin? E se potresti essere gentile a spiegarmi dammi ulteriori informazioni sull'uso di Primary Keys in postgreSQL (e pgAdmin). Lo stesso caso con le chiavi esterne.

+0

Qualsiasi aiuto sarebbe fantastico. :) –

risposta

20

Non c'è alcuna opzione in pgAdmin per aggiungere una colonna a una tabella esistente e renderla la chiave primaria allo stesso tempo, perché ciò è quasi impossibile.

Una colonna chiave primaria deve contenere valori univoci non nulli. Dopo aver aggiunto una colonna a una tabella esistente, contiene valori NULL. Pertanto, è necessario immettere valori univoci prima di poter aggiungere un vincolo UNIQUE o PRIMARY KEY.

Esiste un'eccezione a questa regola, tuttavia: se si aggiunge una colonna serial, i valori univoci vengono inseriti automaticamente. In questo caso, è anche possibile definire lo PRIMARY KEY subito:

ALTER TABLE student ADD COLUMN student_number serial PRIMARY KEY; 

Questo funziona in PostgreSQL 9.1. Non sono sicuro che lo faccia anche nelle versioni precedenti.

pgAdmin non incorpora questo caso speciale per le colonne serial nella finestra di dialogo "Nuova colonna ..." in questo momento (versione 1.14).

+0

Grazie per le informazioni Erwin. –

+1

vedi Victor Barrantes rispondi, n sembra che i theeth scoprano pgadmin quindi ci sono poche possibilità che cada nello scenario che descrivi qui, nonostante la tua risposta sia molto interressante. –

95

Sì, c'è un modo per aggiungere chiavi esterne & primaria in pgAdmin.

Testato in pgAdmin III Ver.1.16.1 (Windows 7)

  1. Selezionare la tabella che si desidera
  2. Ctrl +Alt +Inserisci oppure fare clic destro/Proprietà
  3. Seleziona la scheda "Vincoli"
  4. Nella parte in basso a sinistra del modulo vedrai l'opzione "Chiave primaria"
  5. Fare clic su Aggiungi
  6. Selezionare "Colonne" scheda
  7. Selezionare la colonna che si desidera come chiave
  8. fare clic su Aggiungi

e voi siete tutti insieme.

Puoi riempire più cose se vuoi, ma ora sai come arrivarci.

+0

Questo aggiunge una chiave al tavolo stesso, o semplicemente in PGadmin? Se è il priore, le cose non si romperanno nella tua app? Questo metodo aggiunge un vincolo, non una colonna, quindi è sicuro? – ahnbizcad

+3

Rileggere 6. e 7. (Le colonne sono già presenti nella tabella) –

+0

funziona correttamente – docesam

0

Il sotto SQL funzionerà

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

In pgAdmin3,

  1. Vai alla tabella che si desidera aggiungere alla PK o FK e fare clic destro e scegliere le proprietà.
  2. Vai alla scheda dei vincoli.
  3. Scegli chiave primaria o chiave esterna nell'elenco a discesa accanto al pulsante Aggiungi.
  4. E poi fare clic sul pulsante Aggiungi.
  5. Vai alla scheda colonne.
  6. Scegliere il nome della colonna nell'elenco a discesa che si desidera aggiungere.
  7. Fare clic sul pulsante Aggiungi.
  8. Fare clic sul pulsante OK.

    Spero che sarà utile per voi!