Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: foreign key mysql

  1. #1

    foreign key mysql

    ma come è possibile che il mysql su Ubuntu Server 7.1 e webserver apache nn fa il controllo sulle chiavi esterne????
    O meglio, mi fa inserire un valore come chiave esterna anche se non è presente nell'altra tabella a cui fa riferimento!!!

    Es. INSERT INTO PROGRAMMA (id, data) VALUES ('mario',''2008-5-5) mi fa inserire lo stesso anche se id=mario non è presente nella tabella PAZIENTE.


    Spero di esser stato chiaro, ringrazio tutti...rispondetemi presto è urgente!!!!!

  2. #2
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    due domande:
    1) tipo database MyIsam o InnoDB ?
    2) puoi postare la FOREIGN KEY creata ?

  3. #3
    ecco le due tabelle:

    CREATE TABLE PROGRAMMA(
    id_paziente VARCHAR(15),
    data_prenotazione DATE,
    primo_accesso BOOLEAN,
    obbligato BOOLEAN,
    ore int,

    PRIMARY KEY (id_paziente,data_prenotazione),
    FOREIGN KEY (id_paziente) REFERENCES PAZIENTE (id_paziente)
    )

    CREATE TABLE PAZIENTE(
    id_paziente VARCHAR(30),
    n_archivio_cartella VARCHAR(30) NOT NULL,
    codice_fiscale VARCHAR(16) NOT NULL,
    nome VARCHAR(30) NOT NULL,
    cognome VARCHAR(30) NOT NULL,
    sesso CHAR(1) NOT NULL,
    data_nascita date NOT NULL,
    telefono1 VARCHAR(30) NOT NULL,
    telefono2 VARCHAR(30) ,
    email VARCHAR(50) ,
    citta VARCHAR(30) NOT NULL,
    cap VARCHAR(30) NOT NULL,
    indirizzo VARCHAR(50) NOT NULL,
    provincia VARCHAR(50) NOT NULL,
    PRIMARY KEY(id_paziente)
    )

  4. #4
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    prova così:
    CREATE TABLE PROGRAMMA(
    id_paziente VARCHAR(15),
    data_prenotazione DATE,
    primo_accesso BOOLEAN,
    obbligato BOOLEAN,
    ore int,

    PRIMARY KEY (id_paziente,data_prenotazione),
    FOREIGN KEY (id_paziente) REFERENCES PAZIENTE (id_paziente) ON UPDATE RESTRICT
    )
    type=InnoDB;

  5. #5
    il db midà l'errore
    error 1005(hy00):can't create table 'percorso/tabella.frm' (errno:150)

  6. #6
    cmq sul windows me lo fa il controllo sulle stesse tabelle

  7. #7
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Codice PHP:
    SET FOREIGN_KEY_CHECKS 0;

    CREATE TABLE PROGRAMMA(
    id_paziente VARCHAR(15),
    data_prenotazione DATE,
    primo_accesso BOOLEAN,
    obbligato BOOLEAN,
    ore int,

    PRIMARY KEY (id_paziente,data_prenotazione),
    FOREIGN KEY (id_pazienteREFERENCES PAZIENTE (id_pazienteON UPDATE RESTRICT
    )
    ENGINE=INNODB CHARSET=latin1;

    SET FOREIGN_KEY_CHECKS 1

  8. #8
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    scusami ma prima andavo di fretta

    l'errore: "error 1005(hy00):can't create table 'percorso/tabella.frm' (errno:150)"
    sta a significare che i vincoli di chiave esterna possono essere utilizzati se vengono soddisfatti alcuni prerequisiti, quindi in assenza di tale condizioni restituisce l'errore.
    Di norma i tipi di dato dei campi delle due tabelle devono essere compatibili:

    CREATE TABLE PROGRAMMA(
    id_paziente VARCHAR(15),
    data_prenotazione DATE,
    primo_accesso BOOLEAN,
    obbligato BOOLEAN,
    ore int,

    PRIMARY KEY (id_paziente),
    FOREIGN KEY (id_paziente) REFERENCES PAZIENTE (id_paziente)
    )

    CREATE TABLE PAZIENTE(
    id_paziente VARCHAR(15),
    n_archivio_cartella VARCHAR(30) NOT NULL,
    codice_fiscale VARCHAR(16) NOT NULL,
    nome VARCHAR(30) NOT NULL,
    cognome VARCHAR(30) NOT NULL,
    sesso CHAR(1) NOT NULL,
    data_nascita date NOT NULL,
    telefono1 VARCHAR(30) NOT NULL,
    telefono2 VARCHAR(30) ,
    email VARCHAR(50) ,
    citta VARCHAR(30) NOT NULL,
    cap VARCHAR(30) NOT NULL,
    indirizzo VARCHAR(50) NOT NULL,
    provincia VARCHAR(50) NOT NULL,
    PRIMARY KEY(id_paziente)
    )

  9. #9
    ma nn c'è un modo per impostare che tutte le tabelle create siano innodb???

  10. #10
    c'è un'alternativa all or die di php per la gestione dell'errore su una query?????

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.