包含连接的视图,在删除记录的时候删除了基础表的记录

椅子 2005-11-12 05:05:04
A表,有两个字段,A1和B1,A1为主键
B表,有两个字段,B1和B2,B1为主键
视图C
SELECT dbo.A.*, dbo.B.B2 AS Expr1
FROM dbo.A INNER JOIN
dbo.B ON dbo.A.B1 = dbo.B.B1

我准备删除视图中的某一条记录,想法是只删除A表的某记录就可以,没想到删除的时候会把B表中的A.B1=B.B1记录也删除掉。

如果把B表的主键去掉,会出现以下错误:缺少更新或刷新的键列信息。 后来查资料,原来是补丁没打,现在补丁正在下载中……

我并不想去掉表里的主键。
我尝试了用触发器来解决问题:
CREATE TRIGGER [t] ON [VIEW2]
INSTEAD OF DELETE
AS
insert into B (b1,b2) select b1,b2 from deleted
delete from A where B1 in (select A1 from deleted)

但还是没有达到目的。




...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
椅子 2005-11-15
  • 打赏
  • 举报
回复
不想在基础表里更改数据洒。
在oracle没有遇到类似问题,我都有点糊涂了。错在哪呢?
bugchen888 2005-11-15
  • 打赏
  • 举报
回复
去掉主键,然后使用触发器来实现删除。
天地客人 2005-11-13
  • 打赏
  • 举报
回复
你这两个表有关联吗?是不是关联时同步修改删除数据啊!
ReViSion 2005-11-13
  • 打赏
  • 举报
回复
那就不要在视图里面删除呀,
直接加条件删除A表中的数据不就行啦
椅子 2005-11-13
  • 打赏
  • 举报
回复
顶一下
椅子 2005-11-13
  • 打赏
  • 举报
回复
对的,是有关联,并且关联的字段在B表里是主键。
如果不是主键则删除不掉,是主键就会把两个表的记录删除掉

34,575

社区成员

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

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