Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Problema ad inserire nuovi record
mercoledì 04 aprile 2007 - 16.39
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
thenax
Profilo
| Newbie
3
messaggi | Data Invio:
mer 4 apr 2007 - 16:39
ho provato ad aggiungere dei record alle tabelle da me create (innoDB) ma non ci sono riuscito in quanto mi esce sempre questo errore
#1452 - Cannot add or update a child row: a foreign key constraint fails (`itinerarimondo/tbl_itinerari`, CONSTRAINT `tbl_itinerari_fk` FOREIGN KEY (`itinerarioID`) REFERENCES `tbl_itinerarianalitici` (`itin...
come mai? cosa posso fare? non ditemi che tutte le volte che devo inserire dei record debbo prima cancellare le chiavi esterne!!
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 4 apr 2007 - 16:46
>ho provato ad aggiungere dei record alle tabelle da me create
>(innoDB) ma non ci sono riuscito in quanto mi esce sempre questo
>errore
>
>#1452 - Cannot add or update a child row: a foreign key constraint
>fails (`itinerarimondo/tbl_itinerari`, CONSTRAINT `tbl_itinerari_fk`
>FOREIGN KEY (`itinerarioID`) REFERENCES `tbl_itinerarianalitici`
>(`itin...
>
>come mai? cosa posso fare? non ditemi che tutte le volte che
>devo inserire dei record debbo prima cancellare le chiavi esterne!!
Ciao thenax,
l'errore consiste nel fatto che la tabella tbl_itinerari è in relazione molti a 1 con la tabella tbl_itinerarianalitici, quindi puoi inserire solo itinerari relativi a itinerari analitici esistenti.
Come vedi esiste un constraint FOREIGN KEY chiamato tbl_itinerari_fk sulla colonna itinerarioID della tabella tbl_itinerari che referenzia la colonna itinerarioID della tabella tbl_itinerarianalitici; questo constraint fa in modo che tu non possa inserire righe "orfane", ovvero righe che referenziano itinerari analitici inesistenti.
Se devi inserire un itinerario che non è associato ad alcun itinerario analitico preesistente, dovrai prima di tutto inserire l'itinerario analitico, recuperare il suo ID ed utilizzarlo per valorizzare la colonna itinerarioID di tbl_itinerari durante il comando di INSERT.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
sauel
Profilo
| Newbie
1
messaggi | Data Invio:
mer 22 lug 2009 - 11:34
Ciao a tutti ragazzi ho un piccolo problema e sono due giorni che non riesco a uscirne vi prego aiutatemi :) spiego brevemente.
Com mysql workbench creo due tabelle cosi' strutturate:
EDITORE (id , nome) con id chiave
LIBRI (id, titolo, editore) con id chiave
il campo editore della tabella LIBRI è la mia chiave esterna della tabella EDITORE. Eseguo il collegamento di chiave esterna sempre con il workbench ed esporto lo script in MySql browser dal quale effetto la relativa importazione che riporto:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
-- -----------------------------------------------------
-- Table `editore`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `editore` ;
CREATE TABLE IF NOT EXISTS `editore` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nome` INT NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `libri`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `libri` ;
CREATE TABLE IF NOT EXISTS `libri` (
`id` INT NOT NULL AUTO_INCREMENT ,
`titolo` INT NOT NULL ,
`editore` INT NOT NULL ,
PRIMARY KEY (`id`) ,
CONSTRAINT `fk`
FOREIGN KEY (`editore` )
REFERENCES `mydb`.`editore` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE INDEX `fk` ON `libri` (`editore` ASC) ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
se inserisco uno o piu' record nella tabella EDITORE non ci sono problemi infatti se faccio:
INSERT INTO
editore (id, eta)
VALUES
(1, 22);
la tupla viene creata e inserita correttamente! Ma se ora eseguo la seguente query per creare un libro mi da errore:
INSERT INTO
libri (id, numPagine, editore)
VALUES
(1, 10, 1);
e precisamente:
Cannot add or update a child row: a foreign key constraint fails (`mioDB`.`libri`, CONSTRAINT `fk` FOREIGN KEY (`editore`) REFERENCES `mydb`.`editore` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
perchè mi da errore di vincolo quando assegno il valore uno all'attributo editore della tabella LIBRI con la relativa chiave primaria definita nella tabella EDITORE?
A chi mi aiuta offro una settimana gratis qua in Sardegna che in questo periodo' merita davvero tanto ahah :)
Ciao!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !