PDA

View Full Version : [PostgreSQL] Problema con integrità referenziale (da newbie)


utrecht
09-02-2005, 14:34
Ecco il mio problema, sarà elementare, ma mi ha messo in crisi.
Ambiente: PostgreSQL 7.3.4/phpPgAdmin 3.3/ php 4.3.3 su mandrake 9.2
Sto cercando di fare un esercizio base per provare il concetto dell'integrità referenziale ma ottengo un errore.
Il mio tracciato è:
---

CREATE TABLE product(
category INT NOT NULL,
PRIMARY KEY (category)
) TYPE=INNODB;

CREATE TABLE product_order(
no INT NOT NULL AUTO_INCREMENT,
product_category INT NOT NULL,
FOREIGN KEY (product_category) REFERENCES product (category),
PRIMARY KEY (no)
) TYPE=INNODB;

Perchè mi restituisce il seguente errore?
---

Errore SQL:
ERROR: parser: parse error at or near "TYPE" at character 108

Nel costrutto:
CREATE TABLE product(
category INT NOT NULL,
PRIMARY KEY (category)
) TYPE=INNODB;

CREATE TABLE product_order(
no INT NOT NULL AUTO_INCREMENT,
product_category INT NOT NULL,
FOREIGN KEY (product_category) REFERENCES product (category),
PRIMARY KEY (no)
) TYPE=INNODB;


A differenza di MySql, le tabelle InnoDB sono comunque supportate senza particolari opzioni in fase di installazione, giusto?

Grazie in anticipo per le eventuali risposte.

VICIUS
09-02-2005, 15:01
Se non ricordo male InnoDB non è piu necessario in mysql visto che ora supporta ampiamente tutte le caratteristiche che fornivano le tabelle innodb in modo nativo. In ogni caso non funziona in postgres perchè quel type è una sintassi specifica di mysql quindi puoi eliminarlo tranquillamente.

ciao ;)

utrecht
09-02-2005, 15:04
Premesso che al momento non riesco subito a testare la modifica perchè sono in ufficio, quindi ti chiedo se la sintassi giusta sarà:
---

CREATE TABLE product(
category INT NOT NULL,
PRIMARY KEY (category)
) INNODB;

grazie mille

kingv
09-02-2005, 15:08
togli 'INNODB' e' un tipo di tabella specifico di mysql, lascia dsolo la CREATE TABLE

utrecht
09-02-2005, 15:10
......ma quindi PostgreSQL di default assume la tabella come InnoDB?

kingv
09-02-2005, 15:16
Originariamente inviato da utrecht
......ma quindi PostgreSQL di default assume la tabella come InnoDB?



quindi il tipo tabella INNODB non esiste in postgre

anzi che io sappia esiste un tipo solo, il suo nativo.