Come si eliminano tutti i vincoli di chiave esterna in una tabella in SQL Server 2000 utilizzando T-SQL?Come si eliminano tutti i vincoli di chiave esterna in una tabella in Sql Server 2000?
risposta
Penso che scoprirete che non esiste un modo semplice per eliminare i vincoli su una tabella in SQL Server 2000. Detto questo, ci sono molte persone che hanno scritto script in grado di identificare e rimuovere/disabilitare/ricreare la chiave esterna vincoli. Un esempio è http://www.mssqltips.com/tip.asp?tip=1376, ma non l'ho provato su SQL Server 2000.
MODIFICA: ecco un altro example che genera script di rilascio/creazione per te.
Se semplicemente disattivazione dei vincoli è un'opzione qui, si può utilizzare:
ALTER TABLE myTable NOCHECK CONSTRAINT all
allora si può tornare sulla semplicemente usando:
ALTER TABLE myTable WITH CHECK CHECK CONSTRAINT all
Se si desidera disabilitare vincoli in tutte le tabelle è possibile utilizzare:
-- disable all constraints
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
-- enable all constraints
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
più nella domanda: Can foreign key constraints be temporarily disabled using TSQL?
Tuttavia, se è necessario eliminare i vincoli in modo permanente, è possibile utilizzare this script posted on databasejurnal.com.
Basta modificarlo leggermente per cadere solo le chiavi esterne
create proc sp_drop_fk_constraints
@tablename sysname
as
-- credit to: douglas bass
set nocount on
declare @constname sysname,
@cmd varchar(1024)
declare curs_constraints cursor for
select name
from sysobjects
where xtype in ('F')
and (status & 64) = 0
and parent_obj = object_id(@tablename)
open curs_constraints
fetch next from curs_constraints into @constname
while (@@fetch_status = 0)
begin
select @cmd = 'ALTER TABLE ' + @tablename + ' DROP CONSTRAINT ' + @constname
exec(@cmd)
fetch next from curs_constraints into @constname
end
close curs_constraints
deallocate curs_constraints
return 0
qui si va: (non testato su SQL2000, ma dovrebbe essere ok)
Genera 'disabilita':
SELECT 'IF EXISTS (SELECT * FROM sys.foreign_keys
WHERE object_id = OBJECT_ID(N''[dbo].' + FK +''')
AND parent_object_id = OBJECT_ID(N''[dbo].' + PT + '''))
ALTER TABLE ' + PT + ' NOCHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Genera "abilita":
SELECT 'ALTER TABLE ' + PT + ' WITH CHECK CHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Aggiornamento
: Oops, pensavo lo avessi voluto per tutti i tavoli :) Puoi solo modificare sopra per il tuo singolo tavolo.
- 1. È possibile rilasciare tutti i vincoli di chiave esterna su una tabella in una volta in mySQL 5?
- 2. Rilascia tutti i vincoli in una tabella
- 3. SQL Server: eliminazione di righe con vincoli di chiave esterna: le transazioni possono sovrascrivere i vincoli?
- 4. Come eliminare tutti i vincoli di chiave esterna in tutte le tabelle?
- 5. Come inserire vincoli di chiave esterna su un campo calcolato in SQL Server?
- 6. Come copiare la struttura di una tabella in un'altra con vincoli di chiave esterna in psql?
- 7. SQL Rimuovi tutti i vincoli Azure Friendly
- 8. Elimina dati con chiave esterna nella tabella di SQL Server
- 9. Come disattivare temporaneamente tutti i vincoli in una tabella in Firebird 2.1?
- 10. Come rimuovere il vincolo di chiave esterna in sql server?
- 11. SQL 2008: vincoli di chiave esterna nella vista INFORMATION_SCHEMA
- 12. SQL Server ROW_NUMBER() su SQL Server 2000?
- 13. Vincoli chiave esterna MySQL, eliminazione cascata
- 14. SQL Server 2008: trovare la chiave primaria/esterna nella tabella?
- 15. Come posso eliminare una tabella se esiste un vincolo di chiave esterna in SQL Server?
- 16. Script T-SQL per copiare tutti i vincoli di tabella
- 17. Visualizza i nomi di tutti i vincoli per una tabella in Oracle SQL
- 18. SQLite3 non supporta i vincoli di chiave esterna?
- 19. CASCADE DELETE su due vincoli di chiave esterna
- 20. Vincoli rimandabili in SQL Server
- 21. condizionale chiave esterna in SQL
- 22. Differenza tra vincoli di chiave esterna e riferimenti in Rails
- 23. Vincoli UNICI in SQL (SQL Server)
- 24. Tabella troncata Knex con vincoli di chiave esterna
- 25. SQL Server 2000, sì 2000 hash password
- 26. MySQL - condizionali vincoli di chiave esterna
- 27. Come rendere affidabili i vincoli di chiave esterna?
- 28. Come posso eliminare tutti i vincoli di vincoli predefiniti su una tabella
- 29. SQL Server 2008: vincoli tabella Get
- 30. Come si eliminano tutti i processi in Mysql "show processlist"?
Le tabelle di sistema sono diverse ma denominate in modo simile in SQL Server 2000: http://msdn.microsoft.com/en-us/library/aa260604%28v=SQL.80%29.aspx – Emyr