Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 03-09-2008, 16.07.50   #1
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
[MYSQL] On delete cascade

Sto provando ad usare la clausola "on delete cascade" su due tabelle in modo da manterere i dati consistenti nel caso venisse cancellata una riga in una delle due tabelle.
La creazione delle tabelle l'ho fatta così:
Codice:
create table Conto (
	numeroConto 	int	 	not null auto_increment,
	saldo		float(2)	default 0,
	primary key (numeroConto)
)
engine=innodb;

create table Possiede (
	Cliente		varchar(10)	primary key,
	Conto		int		not null auto_increment,
	Key (conto)
)
engine=innodb;


alter table conto add constraint possiede_delete foreign key (numeroconto) references possiede(conto) on delete cascade;
alter table possiede add constraint conto_delete foreign key (conto) references conto(numeroconto) on delete cascade;
Nel momento in cui provo ad inserire una riga nella tabella conto appare questo messaggio d'errore:
Cannot add or update a child row: a foreign key constraint fails (`ricettelastminute`.`conto`, CONSTRAINT `possiede_delete` FOREIGN KEY (`numeroConto`) REFERENCES `possiede` (`Conto`) ON DELETE CASCADE)
Cosa analoga se l'inserimento lo provo nella tabella possiede, cambia solo l'alter table che mi visualizza dopo "Cannot add or update a child row: a foreign key constraint fails".

Da cosa dipende? come faccio a far funzionare "on delete cascade"?
Alhazred non è collegato   Rispondi citando
Vecchio 01-10-2008, 13.32.45   #2
micmen
Junior Member
 
Registrato: 11-09-2008
Messaggi: 53
micmen promette bene
Secondo me non è possibile dichiarare una chiave esterna come hai fatto tu (in pratica è un riferimento incrociato). Di solito si usa una tabella figlia che ne referenzia una padre. Cancellando una riga nel padre è possibile cancellare tutte le righe correlate dalla figlia. Cmq. per capire meglio potresti dare una descrizione del problema che sta a monte ? Cioè cosa deve fare l'applicativo che usa queste tabelle ?
micmen non è collegato   Rispondi citando
Vecchio 01-10-2008, 13.49.20   #3
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho risolto decidendo proprio dando una gerarchia alle tabelle e non ho più problemi.
Alhazred non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[MYSQL] perkè questo codice non funziona? Poseidon Programmazione 6 03-11-2008 02.44.12
[MYSQL] Problema subquery Redentore Programmazione 4 27-08-2007 09.42.42
Cascade DTP 4.0.027 Macao Archivio News Software 0 23-04-2007 01.56.58
Sure Delete v5.11 Final (freeware), permanently delete data carletto Segnalazioni Web 0 04-01-2005 22.34.17
Delete Doctor - free (una volta tanto) carletto Segnalazioni Web 2 22-08-2004 00.33.39

Orario GMT +2. Ora sono le: 18.06.01.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.