数据库中有个user表,每个用户对应字段UID,现在删除User表中一条数据,需要对应删除别的表中对应uid的数据,需要怎么做

Gold_1010 2016-06-16 03:12:18
必须要一个表一个表的手动Delete 。。where uid='XX'吗 有没有删除数据库中所有表中 uid=‘XX’的语句
...全文
443 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gold_1010 2016-06-16
  • 打赏
  • 举报
回复
引用 4 楼 roy_88 的回复:
DECLARE @Sql NVARCHAR(max)=''
SELECT @Sql=@Sql+'DELETE '+QUOTENAME(A.name)+' WHERE UID=''XXXX'';' FROM sys.tables AS a INNER JOIN sys.columns AS b ON a.object_id=b.object_id AND b.name='UID'
EXEC(@Sql)
XXX为条件
谢谢 ,可行。 我研究研究
中国风 2016-06-16
  • 打赏
  • 举报
回复
如果有外健关系时删除时要把主表放在最后删除
中国风 2016-06-16
  • 打赏
  • 举报
回复
或用系统存储去实现
EXEC sys.sp_MSforeachtable @command1 = N'delete ? where uid=''xxx'';',
    @whereand = N' and exists(select 1 from sys.columns where object_id=o.id and name=''uid'')'
Gold_1010 2016-06-16
  • 打赏
  • 举报
回复
引用 2 楼 roy_88 的回复:
可以用生成语句的方式,如果你的业务需要这样算是 ,可建外健用级联删除就行了
表结构好像已经不能改了,设外键可以在表中已有数据的情况下设吗, 好像很复杂
中国风 2016-06-16
  • 打赏
  • 举报
回复
DECLARE @Sql NVARCHAR(max)=''
SELECT @Sql=@Sql+'DELETE '+QUOTENAME(A.name)+' WHERE UID=''XXXX'';' FROM sys.tables AS a INNER JOIN sys.columns AS b ON a.object_id=b.object_id AND b.name='UID'
EXEC(@Sql)
XXX为条件
Gold_1010 2016-06-16
  • 打赏
  • 举报
回复
表结构好像已经不能改了,设外键可以在表中已有数据的情况下设吗, 好像很复杂
中国风 2016-06-16
  • 打赏
  • 举报
回复
可以用生成语句的方式,如果你的业务需要这样算是 ,可建外健用级联删除就行了
Gold_1010 2016-06-16
  • 打赏
  • 举报
回复
数据库是sql 08 r2

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧