[sql server] L'istruzione INSERT è in conflitto con il vincolo FOREIGN...

mercoledì 11 dicembre 2013 - 17.54

svipla Profilo | Senior Member

Ciao a tutti
Ho creato 2 tabelle:

tbConfLocalitaTuristiche
id(chiave di tipo bigint e con identity=Sì)
codice_comune(nvarchar(6))

tbStrutture
id(bigint e con identity=Sì)
codice_struttura(campo chiave di tipo nvarchar(30))
fk_localita(bigint che ammette valori null)

Ho definito una relazione tra le due tabelle:
Tabella di chiave primaria: tbConfLocalitaTuristiche -> id
Tabella di chiave esterna: tbStrutture -> fk_localita

Quando eseguo la insert:

INSERT INTO tbStrutture ( codice_struttura, fk_localita, data_inserimento, data_ultima_modifica, ip_inserimento, ip_ultima_modifica, user_inserimento, user_ultima_modifica) VALUES ( 'VPS630467d7cb8043', '069', GETDATE(), GETDATE(), '::1', '::1', 'xxx', 'xxx')

Ricevo questo errore:
L'istruzione INSERT è in conflitto con il vincolo FOREIGN KEY "FK_tbStrutture_tbConfLocalitaTuristiche". Il conflitto si è verificato nella tabella "dbo.tbConfLocalitaTuristiche", column 'id' del database "XXX".

Se nella relazione imposto:
Verifica dati esistenti durante la creazione o la riabilitazione=No
Attiva vincolo della chiave esterna=No

La query viene eseguita.
Non capisco perchè mi da errore quando eseguo la insert se ho impostato quelle due proprietà a Sì.
Grazie mille

0v3rCl0ck Profilo | Guru

>Ciao a tutti
>Ho creato 2 tabelle:
>
>tbConfLocalitaTuristiche
>id(chiave di tipo bigint e con identity=Sì)
>codice_comune(nvarchar(6))

perchè in questa tabella deve già essere stata inserita la riga con id = 69 prima di inserire la riga nella tbStrutture, di fatto hai creato una relazione 1 a molti, dove per una riga di tbConfLocalitaTuristiche possono esistere 1 o più righe di tbStrutture. La foreign key (fk) serve proprio ad attivare un vincolo che ti permetta di avere dati consistenti nel tempo.


Ciao,
Michael Denny
Software Developer & Architect
http://blogs.dotnethell.it/Regulator/
http://dennymichael.wordpress.com
Twitter: @dennymic
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5