Visualizzazione dei risultati da 1 a 5 su 5

Discussione: constrain su un campo

  1. #1

    constrain su un campo

    Salve è possibile creare una tabella con un campo che può assumere solo valori presenti in un campo di un'altra tabella??

    mi spiego meglio con un esempio:

    tabelle:
    tabella1, tabella2

    tabella1:
    tb1_campo1, tb1_campo2
    tabella2:
    tb2_campo1, tb2_campo2

    dati:
    tb1_campo1= "Pippo", tb1_campo2= "23";
    tb1_campo1= "Pluto", tb1_campo2= "2";
    tb1_campo1= "Marco", tb1_campo2= "3";
    tb1_campo1= "Giovanni", tb1_campo2= "1";

    adesso voglio che nel campo tb2_campo1 devo poter inserire solo valori presenti per il campo tb1_campo1 e quindi ("Pippo", "Pluto", "Marco", "Giovanni")

    Ho provato con la seguente query:

    ALTER TABLE tabella2
    ADD CONSTRAINT tb2_campo1 FOREIGN KEY (tb2_campo1) REFERENCES tabella1(tb1_campo1);

    la query viene eseguita senza errori, ma quando provo a inserire un record in tabella2 con un valore per tb2_campo1 non presente in tabella1.tb1_campo1 non mi viene restituito nessun errore.


    Spero di ricevere un vostro aiuto,
    vi ringrazio anticipatamente.

    Nicoletta

  2. #2

    [MySql]

    Salve ragazzi,
    ho appena letto da un articolo interno al sito (http://database.html.it/articoli/leg...le-in-mysql/1/)
    che il mio problema si risolve con le Foreign keys e nello specifico creando le tabelle di tipo InnoDB storage engine.

    L'ho fatto, ma continua a non funzionare.

    Di seguito le mie due tabelle che voglio mettere in relazione:

    CREATE TABLE IF NOT EXISTS `categoria`
    (
    `id_categoria` int(11) NOT NULL auto_increment ,
    `nome_categoria` varchar(100) NOT NULL,
    PRIMARY KEY (`id_categoria`)
    ) TYPE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


    CREATE TABLE IF NOT EXISTS `gara`
    (
    `id_gara` int(11) NOT NULL auto_increment,
    `id_categoria` int(11) NOT NULL ,
    PRIMARY KEY (`id_gara`),
    KEY `id_categoria` (`id_categoria`),
    FOREIGN KEY (id_categoria) REFERENCES categoria(id_categoria)
    ) TYPE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


    Non mi viene segnalato nessun errore nella creazione delle tabelle, ma quando provo a inserire nella tabella gara un record con id_categoria un valore non presente in categoria.id_Categoria, non mi viene segnalato nessun errore.
    In cosa sbaglio??

    Versione MySQL: 5.0.68

    Nicoletta

  3. #3
    se te usassi uno script php potresti fare dei controlli con degli errori, ma dal nome del topic non si capisce se è una domanda che inerisce a puro codice sql o se vuoi uno script. (per codice sql sarebbe bene mettere davanti al nome del topic il prefisso [SQL] o [MYSQL] o [Nomedatabase]).

  4. #4
    Perdon, l'ho fatto all'ultimo messaggio che ho inserito ... non sapevo di questa regola.

    Cmq mi interessa solo lato sql.

    Grazie ancora

  5. #5
    più che regola... aiuta chi vorrebbe darti una mano e chi poi in un secondo momento ha bisogno di fare una ricerca

    Comunque in questo caso non posso aiutarti (se non puoi usare uno script php), lascio la parola ad altri

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 © 2024 vBulletin Solutions, Inc. All rights reserved.