oracle 外键更改为on delete cascade属性,SQL脚本更改所有外键以添加ON DELETE CASCADE

这里是我用于类似目的的脚本。它不支持复合外键(它使用多个字段。)它可能需要一些调整,它将适合您的情况。编辑:特别是它不能正确处理多列外键。

select

DropStmt = 'ALTER TABLE [' + ForeignKeys.ForeignTableSchema +

'].[' + ForeignKeys.ForeignTableName +

'] DROP CONSTRAINT [' + ForeignKeys.ForeignKeyName + ']; '

, CreateStmt = 'ALTER TABLE [' + ForeignKeys.ForeignTableSchema +

'].[' + ForeignKeys.ForeignTableName +

'] WITH CHECK ADD CONSTRAINT [' + ForeignKeys.ForeignKeyName +

'] FOREIGN KEY([' + ForeignKeys.ForeignTableColumn +

']) REFERENCES [' + schema_name(sys.objects.schema_id) + '].[' +

sys.objects.[name] + ']([' +

sys.columns.[name] + ']) ON DELETE CASCADE; '

from sys.objects

inner join sys.columns

on (sys.columns.[object_id] = sys.objects.[object_id])

inner join (

select sys.foreign_keys.[name] as ForeignKeyName

,schema_name(sys.objects.schema_id) as ForeignTableSchema

,sys.objects.[name] as ForeignTableName

,sys.columns.[name] as ForeignTableColumn

,sys.foreign_keys.referenced_object_id as referenced_object_id

,sys.foreign_key_columns.referenced_column_id as referenced_column_id

from sys.foreign_keys

inner join sys.foreign_key_columns

on (sys.foreign_key_columns.constraint_object_id

= sys.foreign_keys.[object_id])

inner join sys.objects

on (sys.objects.[object_id]

= sys.foreign_keys.parent_object_id)

inner join sys.columns

on (sys.columns.[object_id]

= sys.objects.[object_id])

and (sys.columns.column_id

= sys.foreign_key_columns.parent_column_id)

) ForeignKeys

on (ForeignKeys.referenced_object_id = sys.objects.[object_id])

and (ForeignKeys.referenced_column_id = sys.columns.column_id)

where (sys.objects.[type] = 'U')

and (sys.objects.[name] not in ('sysdiagrams'))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值