updateing all Foreign key constraint in sql server? -


i have database in sql server 2008 r2 have many table (over 200) , have many relation betweens tables. delete rule in of relations no action need update relation delete rule cascade @ once because of many relation in database dont want 1 one there way ?

typically, when alter foreign key constraint, using ssms gui, sql server on background drops , recreates same.

here script, generate sql dropping fkeys , recreating them on update cascade on delete cascade options

assumption is, fkeys name "fk....."

set nocount on;  declare @objects table ( id int identity(1,1), tablename sysname, schemaname sysname )  insert @objects (tablename, schemaname)     select         table_name,         constraint_schema     information_schema.key_column_usage     constraint_name 'fk%'   declare @min int, @max int,@table sysname,@schema sysname  select @min = 1, @max = max(id) @objects  while @min <=@max begin  select     @table = tablename,@schema = schemaname @objects id = @min  print '/*drop foreign key statements [' + @schema + '].[' + @table + ']*/' select     'alter table [' + schema_name(o.schema_id) + '].[' + o.name + ']  drop constraint [' + fk.name + ']'     sys.foreign_keys fk     inner join sys.objects o         on fk.parent_object_id = o.object_id     o.name = @table ,     schema_name(o.schema_id) = @schema      print '/*create foreign key statements ['  + @schema + '].[' + @table + ']*/'     select         'alter table [' + schema_name(o.schema_id) + '].[' + o.name + ']  add constraint [' + fk.name + '] foreign key ([' + c.name + '])      references [' + schema_name(refob.schema_id) + '].[' + refob.name + '] ([' + refcol.name + '])on update  cascade on delete  cascade'     sys.foreign_key_columns fkc     inner join sys.foreign_keys fk         on fkc.constraint_object_id = fk.object_id     inner join sys.objects o         on fk.parent_object_id = o.object_id     inner join sys.columns c         on fkc.parent_column_id = c.column_id ,     o.object_id = c.object_id inner join sys.objects refob     on fkc.referenced_object_id = refob.object_id inner join sys.columns refcol     on fkc.referenced_column_id = refcol.column_id ,     fkc.referenced_object_id = refcol.object_id o.name = @table , schema_name(o.schema_id) = @schema  set @min = @min+1 end 

hope helps.

raj

ps: setting query output text helps. please read comment posted on question. arbitrarily setting cascade may not right thing


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -