Messaggio di errore 1785 si verifica quando si crea un vincolo FOREIGN KEY pu˛ causare pi¨ percorsi a catena

Traduzione articoli Traduzione articoli
Identificativo articolo: 321843 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Si potrebbe essere visualizzato il seguente messaggio di errore quando si crea un vincolo FOREIGN KEY:
Server: Messaggio 1785, livello 16, stato 1, riga 1 Introduzione A FOREIGN KEY vincolo 'fk_two' nella tabella 'tabella2' potrebbe causare cicli o pi¨ percorsi a catena. Specificare ON DELETE NO ACTION o ON UPDATE NO ACTION oppure modificare altri vincoli FOREIGN KEY. Server: Messaggio 1750, livello 16, stato 1, riga 1 Impossibile creare il vincolo. Vedere gli errori precedenti.

Cause

╚ visualizzato questo messaggio di errore in SQL Server, una tabella non vengono visualizzati pi¨ di una volta in un elenco di tutti i di azioni referenziali a catena che viene avviato da un'istruzione UPDATE o DELETE. Ad esempio, la struttura di azioni referenziali a catena solo deve disporre un percorso a una tabella specifica nella struttura della azioni referenziali a catena.

Workaround

Per risolvere questo problema, non creare una chiave esterna che verrÓ creati pi¨ di un percorso a una tabella in un elenco di azioni referenziali a catena.

╚ possibile applicare l'integritÓ referenziale in diversi modi. IntegritÓ referenziale dichiarativa (DRI) Ŕ il modo pi¨ semplice, ma Ŕ anche il modo meno flessibile. Se Ŕ necessario che una maggiore flessibilitÓ, ma si desidera che un elevato livello di integritÓ, Ŕ possibile utilizzare i trigger.

Informazioni

Nell'esempio di codice riportato di seguito Ŕ un esempio di un tentativo di creazione FOREIGN KEY che genera il messaggio di errore:

Use tempdb
go
create table table1 (user_ID integer not null primary key, user_name
char(50) not null)
go

create table table2 (author_ID integer not null primary key, author_name
char(50) not null, lastModifiedBy integer not null, addedby integer not
null)

go

alter table table2 add constraint fk_one foreign key (lastModifiedby)
references table1 (user_ID) on delete cascade on update cascade
go
alter table table2 add constraint fk_two foreign key (addedby)
references table1(user_ID) on delete no action on update cascade
go
--this fails with the error because it provides a second cascading path to table2.

alter table table2 add constraint fk_two foreign key (addedby)
references table1 (user_ID) on delete no action on update no action
go
-- this works.
				

RIFERIMENTI

Per ulteriori informazioni, vedere l'argomento "CSS di vincoli di integritÓ referenziale" nella documentazione in linea di SQL Server 2000.

ProprietÓ

Identificativo articolo: 321843 - Ultima modifica: venerdý 2 novembre 2007 - Revisione: 3.4
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi:á
kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 321843
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com