cannot ... because it is being referenced by a FOREIGN KEY constraint
hier ein select zum generieren von alter table statements um alle foreign keys der datenbank zu löschen:
select 'alter table ['+t.name + '] drop constraint ['+k.name +']' as keyname from sys.foreign_keys k join sys.tables t on t.object_id=k.parent_object_id
wenn man nur daten im "bulk modus" (also ganze tabellen kopieren) einfügen will, genügt es vorübergehend die constraints zu disabeln:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
und dann wieder einzuschalten:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
when droping tables or deleting rows you often get:
cannot ... because it is being referenced by a FOREIGN KEY constraint
this select generates alter table statements to delete all foreign key in a database:
select 'alter table ['+t.name + '] drop constraint '+k.name as keyname from sys.foreign_keys k join sys.tables t on t.object_id=k.parent_object_id
if you just want to copy tables, its enough to disable constraints:
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
and after coping data enable again:
exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
No comments:
Post a Comment