Viene visualizzato il seguente messaggio anche quando la tabella che fa riferimento è vuota: "Impossibile troncare la tabella 'dbo.Link' perché viene referenziata da un vincolo FOREIGN KEY "Non sembra avere molto senso perché questo si sta verificando. Eventuali suggerimenti?Impossibile troncare la tabella perché viene referenziato da un vincolo FOREIGN KEY
risposta
In SQL Server una tabella a cui fa riferimento un FK non può essere attualmente troncata anche se tutte le tabelle di riferimento sono vuote o le chiavi esterne sono disabilitate.
è necessario utilizzare DELETE
(può richiedere molto più logging) o far cadere il rapporto (s) prima di utilizzare TRUNCATE
e ricrearli dopo o vedere le soluzioni alternative su this connect item di un modo per raggiungere tale obiettivo utilizzando ALTER TABLE ... SWITCH
Eseguire la seguente query per cercare qualsiasi vincolo:
use MyDatabase
select c.name as c_name, t.name as t_name
from sys.key_constraints c
join sys.tables t on t.object_id = c.parent_object_id
Se alcun vincolo trovato sulla vostra tavola, rimuoverlo.
Se si riceve questo errore ed è necessario troncare la tabella, quindi la soluzione alternativa potrebbe essere quella di poter eliminare e ricreare la tabella insieme a primary/other_keys/indexes/triggers
. Assicurati di non aver bisogno dei dati in quella tabella.
Questa anima funziona come un incantesimo per me e difficilmente ha impiegato un minuto per finire. Lo sto facendo per scopi di mascheramento.
Non è possibile troncare una tabella su cui è presente un vincolo FK. Per ovviare al problema, è possibile: 1/Eliminare i vincoli 2/Troncare la tabella 3/Ricreare i vincoli.
Qui è lo script T-SQL associati, supponendo di avere 2 tavoli chiamati MyTable e MyReferencedTable:
-- Remove constraint
IF EXISTS(SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_MyReferencedTable_MyTable')
BEGIN
ALTER TABLE dbo.MyReferencedTable
DROP CONSTRAINT FK_MyReferencedTable_MyTable
END
-- Truncate table
TRUNCATE TABLE dbo.MyTable
-- Re-Add constraint
IF NOT EXISTS(SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_MyReferencedTable_MyTable')
BEGIN
ALTER TABLE dbo.MyReferencedTable
WITH CHECK ADD CONSTRAINT [FK_MyReferencedTable_MyTable] FOREIGN KEY(ListingKey)
REFERENCES dbo.MyTable (ListingKey)
END
Invece di eliminare o ricreare il vincolo, preferisco in questo modo più semplice. Disattivare la convalida vincolo eseguendo la seguente interrogazione prima:
SET FOREIGN_KEY_CHECKS=0;
Poi troncare le tabelle
E, infine, riattivare la convalida vincolo:
SET FOREIGN_KEY_CHECKS=1;
Quello è un soluzione comune quando si migrare i database, quindi non devi preoccuparti per l'ordine in cui sono inserite le tabelle.
Questa non è un'impostazione valida di SQL Server. –
Questo è per MySQL e non SqlServer. –
- 1. MERGE violazione di vincolo PRIMARY KEY
- 2. errore "Impossibile creare la tabella ..." su come aggiungere FOREIGN KEY
- 3. SQL conflitto con il vincolo FOREIGN KEY
- 4. Sementi Rails: come troncare la tabella DB?
- 5. Disabilitare il vincolo di chiave esterna, non è ancora possibile troncare la tabella? (SQL Server 2005)
- 6. Come rimuovo un vincolo di unicità da una tabella MySQL?
- 7. laravel 5.1 Migrazione e semina non può troncare una tabella di riferimento in un vincolo di chiave esterna
- 8. 'NSInvalidArgumentException', la ragione: 'Impossibile analizzare formato vincolo'
- 9. Impossibile inserire nella tabella perché la tabella esiste già?
- 10. Troncare o rilasciare e creare tabella
- 11. Violazione del vincolo PRIMARY KEY nella tabella di collegamento del primo codice Entity Framework
- 12. Impossibile eliminare la tabella: un vincolo di chiave esterna non riesce
- 13. Errore: impossibile trovare la classe 'android.app.AppOpsManager', referenziato dal metodo com.google.android.gms.common.GooglePlayServicesUtil.zza
- 14. Istruzione INSERT in conflitto con il vincolo FOREIGN KEY
- 15. Trova un vincolo univoco nella tabella database
- 16. NSGenericException 'la ragione:' Impossibile installare vincolo vista
- 17. Come aggiungere un vincolo di controllo a una tabella?
- 18. Trovare a quale tabella appartiene un vincolo
- 19. La sequenza non viene ripristinata dopo il troncamento della tabella
- 20. Come TRONCARE TABELLA usando l'ORM di Django?
- 21. Come troncare una tabella usando Doctrine?
- 22. Utilizzare hibernate/hql per troncare una tabella?
- 23. Perché viene eseguita una scansione della tabella?
- 24. Fix ORA-02273: questa chiave univoca/primaria è referenziato da alcune chiavi esterne
- 25. Crea PK per la tabella #temp non riuscita quando lo script viene eseguito in parallelo
- 26. Contesto di protezione irraggiungibile tramite Feign RequestInterceptor
- 27. Mysql. Impossibile creare la tabella errno 150
- 28. L'istruzione ALTER TABLE conflitto con il vincolo FOREIGN KEY
- 29. Dichiarazione di un vincolo predefinito durante la creazione di una tabella
- 30. Perché la mia tastiera riceve gli stessi eventi di key-up e key-down più volte?
sembra una caratteristica piuttosto scadente del prodotto. ma credo che sarà necessario farlo rientrare nel codice. grazie – stats101