简单的删除

shuhua 2008-06-25 04:27:33
两个表,A 和AENTRY 。中间通过INTERID建立关联关系。
要求删除客户内码(A表)中包含4947,5777 并且 物料(AENTRY表)中包含1933,2601 的数据。
同时删除两个表中的数据。
...全文
132 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mugua604 2008-06-25
  • 打赏
  • 举报
回复
两个语句删掉就可以了~~

呵呵
shuhua 2008-06-25
  • 打赏
  • 举报
回复
应该是AENTRY是A的分录表,主键是finterid
中国风 2008-06-25
  • 打赏
  • 举报
回复
要清楚那一個是主健、外健

如果是AENTRY引用,A先刪AENTRY,再刪A就行了
shuhua 2008-06-25
  • 打赏
  • 举报
回复
delete aentry where EXISTS (select * from a x join aentry y on x.finterid = y.finterid
where x.fsupplyid in (4947,5777) and y.fitemid in(1933,2601))

把aentry中所有的数据都删除了。
happysophie 2008-06-25
  • 打赏
  • 举报
回复
写两条语句删除。
或者如果删除的东西有关联的话,比如需要删除A表的内容,是AENTRY表与之有关联的数据,如果已经有外键约束的话,那么删除A表的数据,也就删除了AENTRY表的与之关联的数据。
lff642 2008-06-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 shuhua 的帖子:]
两个表,A 和AENTRY 。中间通过INTERID建立关联关系。
要求删除客户内码(A表)中包含4947,5777 并且 物料(AENTRY表)中包含1933,2601 的数据。
同时删除两个表中的数据。
[/Quote]

一条语句没法实现 .使用两条语句并且写成一个事务.
  • 打赏
  • 举报
回复
完成的功能是:
把A中包含4947,5777 的数据删除的时候同时删除AENTRY的数据,
1933和2601 我理解为AENTRY的INTERID说包含的数据,不知道理解是否正确
  • 打赏
  • 举报
回复


在表A中先建立触发器吧

create trigger t1
on A
for delete
as
delete from AENTRY
where INTERID in(select INTERID from deleted)
or charindex(1933,interid)>0 or charindex(2601,interid)>0

然后:
delete from A
where exists(select * from A where charindex(4947 ,interid)>0 or charindex(5777 ,interid)>0)
shuhua 2008-06-25
  • 打赏
  • 举报
回复
呵呵,我也是拿来就是这个问题,没有其他的补充。
nzperfect 2008-06-25
  • 打赏
  • 举报
回复
看不懂

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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