Mi sapete dire l'errore?

mercoledì 17 settembre 2008 - 14.42

gommosina Profilo | Junior Member

CREATE TABLE ACQUISTI(
ANNO INT CHECK(ANNO>2008),
N_FATTURA INT,
PRIMARY KEY (ANNO, N_FATTURA),
DATA_ACQUISTO DATETIME NOT NULL,
TOTALE_IMPONIBILE DECIMAL(7,2) NOT NULL,
TOTALE_IVA DECIMAL(6,2) NOT NULL,
TOTALE_FATTURA DECIMAL(7,2) NOT NULL,
USER_ID VARCHAR(8),
FOREIGN KEY(USER_ID) REFERENCES UTENTI(USER_ID)
)

CREATE TABLE DETTAGLIO_ACQUISTI(
ID_ACQUISTO INT PRIMARY KEY,
ANNO INT CHECK(ANNO>2008),
N_FATTURA INT,
IMPORTO_UNITARIO DECIMAL(6,2),
IVA_PERCENTUALE DECIMAL(4,2),
SCONTO_PRECENTUALE DECIMAL(4,2),
TOT_IMPONIBILE DECIMAL(7,2),
TOT_IVA DECIMAL(6,2),
FOREIGN KEY(ANN0) REFERENCES ACQUISTI(ANN0),
FOREIGN KEY(N_FATTURA) REFERENCES ACQUISTI(N_FATTURA)
)

sulla tabella dettaglio acquisti mi da qst errore:
Messaggio 1769, livello 16, stato 1, riga 39
La chiave esterna 'ANN0' fa riferimento alla colonna non valida 'ANN0' nella tabella di riferimento 'DETTAGLIO_ACQUISTI'.
Messaggio 1750, livello 16, stato 0, riga 39
Impossibile creare il vincolo. Vedere gli errori precedenti.

grazie mille

lbenaglia Profilo | Guru

>sulla tabella dettaglio acquisti mi da qst errore:
>Messaggio 1769, livello 16, stato 1, riga 39
>La chiave esterna 'ANN0' fa riferimento alla colonna non valida
>'ANN0' nella tabella di riferimento 'DETTAGLIO_ACQUISTI'.
>Messaggio 1750, livello 16, stato 0, riga 39
>Impossibile creare il vincolo. Vedere gli errori precedenti.

Hai scritto ANN0 con lo zero "0" al posto della "O" maiuscola...

>grazie mille
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alx_81 Profilo | Guru

>CREATE TABLE ACQUISTI(
>ANNO INT CHECK(ANNO>2008),
>N_FATTURA INT,
>PRIMARY KEY (ANNO, N_FATTURA),
>DATA_ACQUISTO DATETIME NOT NULL,
>TOTALE_IMPONIBILE DECIMAL(7,2) NOT NULL,
>TOTALE_IVA DECIMAL(6,2) NOT NULL,
>TOTALE_FATTURA DECIMAL(7,2) NOT NULL,
>USER_ID VARCHAR(8),
>FOREIGN KEY(USER_ID) REFERENCES UTENTI(USER_ID)
>)
>
>CREATE TABLE DETTAGLIO_ACQUISTI(
>ID_ACQUISTO INT PRIMARY KEY,
>ANNO INT CHECK(ANNO>2008),
>N_FATTURA INT,
>IMPORTO_UNITARIO DECIMAL(6,2),
>IVA_PERCENTUALE DECIMAL(4,2),
>SCONTO_PRECENTUALE DECIMAL(4,2),
>TOT_IMPONIBILE DECIMAL(7,2),
>TOT_IVA DECIMAL(6,2),
>FOREIGN KEY(ANN0) REFERENCES ACQUISTI(ANN0),
>FOREIGN KEY(N_FATTURA) REFERENCES ACQUISTI(N_FATTURA)
>)
>
>sulla tabella dettaglio acquisti mi da qst errore:
>Messaggio 1769, livello 16, stato 1, riga 39
>La chiave esterna 'ANN0' fa riferimento alla colonna non valida
>'ANN0' nella tabella di riferimento 'DETTAGLIO_ACQUISTI'.
>Messaggio 1750, livello 16, stato 0, riga 39
>Impossibile creare il vincolo. Vedere gli errori precedenti.
Secondo me hai scritto ANN0 ovvero ANN[zero] e non ANN[lettera O]..

>grazie mille
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gommosina Profilo | Junior Member

grazie mille a tutti e 2 ,mi stavo esaurendo..
grazie grazie

gommosina Profilo | Junior Member

ora però mi da un'altro errore:
La tabella con riferimenti 'ACQUISTI' non contiene chiavi primarie o candidate corrispondenti all'elenco delle colonne di riferimento nella chiave esterna 'FK__DETTAGLIO___ANNO__07020F21'.
Messaggio 1750, livello 16, stato 0, riga 1
Impossibile creare il vincolo. Vedere gli errori precedenti.
e ora cos'è?
aiuto!!!!!!!!!
grazie

lbenaglia Profilo | Guru

>ora però mi da un'altro errore:
>La tabella con riferimenti 'ACQUISTI' non contiene chiavi primarie
>o candidate corrispondenti all'elenco delle colonne di riferimento
>nella chiave esterna 'FK__DETTAGLIO___ANNO__07020F21'.
>Messaggio 1750, livello 16, stato 0, riga 1
>Impossibile creare il vincolo. Vedere gli errori precedenti.
>e ora cos'è?
>aiuto!!!!!!!!

Stai referenziando la colonna ANNO della tabella ACQUISTI ma non è una PK.
Il problema lo risolveresti definendo un constraint di PK su tale colonna, ma mi sembra una str***ata

Chi ha definito la struttura di quelle tabelle?

EDIT: forse ho capito, stai definendo 2 FK invece che una sola sull'intera PK.

USE tempdb; CREATE TABLE UTENTI( USER_ID VARCHAR(8) NOT NULL PRIMARY KEY ); CREATE TABLE ACQUISTI( ANNO INT CHECK(ANNO>2008), N_FATTURA INT, DATA_ACQUISTO DATETIME NOT NULL, TOTALE_IMPONIBILE DECIMAL(7,2) NOT NULL, TOTALE_IVA DECIMAL(6,2) NOT NULL, TOTALE_FATTURA DECIMAL(7,2) NOT NULL, USER_ID VARCHAR(8), FOREIGN KEY(USER_ID) REFERENCES UTENTI(USER_ID), CONSTRAINT PK_ACQUISTI PRIMARY KEY (ANNO, N_FATTURA) ); CREATE TABLE DETTAGLIO_ACQUISTI( ID_ACQUISTO INT PRIMARY KEY, ANNO INT CHECK(ANNO>2008), N_FATTURA INT, IMPORTO_UNITARIO DECIMAL(6,2), IVA_PERCENTUALE DECIMAL(4,2), SCONTO_PRECENTUALE DECIMAL(4,2), TOT_IMPONIBILE DECIMAL(7,2), TOT_IVA DECIMAL(6,2), CONSTRAINT FK_DETTAGLIO_ACQUISTI_ACQUISTI FOREIGN KEY(ANNO, N_FATTURA) REFERENCES ACQUISTI(ANNO, N_FATTURA) ); DROP TABLE DETTAGLIO_ACQUISTI, ACQUISTI, UTENTI;

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gommosina Profilo | Junior Member

io l'ho definita.
ma le chiavi primarie sono 2.
mi spieghi come posso fare praticamente?
x favore.
grazie

lbenaglia Profilo | Guru

>io l'ho definita.
>ma le chiavi primarie sono 2.
Per definizione non è possibile avere 2 PK, quella che hai è UNA PK costituita da due colonne.

>mi spieghi come posso fare praticamente?
>x favore.
Guarda sopra.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gommosina Profilo | Junior Member

funziona..ancora grazie mille..
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5