外键关联导致主表无法删除某条记录

一品川 2010-04-18 03:02:57
比如表A是主表
由于业务需要,表B、C、D都要用到表A的id,于是它们都有一个字段外键关联到表A
现在表A要删除一些记录,却因为有某些记录(表B、C、D中的)外键关联,无法删除
大家遇到这种情况是如何处理的?难道要提示用户先去删除表B、C、D中的关联记录?
...全文
167 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
一品川 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 htl258 的回复:]
SQL code
--ORACLE级联删除使用格式:

CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20))

CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))
[/Quote]牛就一个字。啥也不说了,感谢,散分!
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
--ORACLE级联删除使用格式: 

CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20))

CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))
一品川 2010-04-18
  • 打赏
  • 举报
回复
我是楼主,谢谢各位大侠
既然主表记录被删除,从表级联记录就是冗余的了,也应该被删除。这样我在删除时要给用户一些提示,表B、C、D中的某些关联记录也要被删除!
4楼还给出了源代码,太感谢了。但是我的数据库是oracle的,oracle板块有点冷清,才来到这里打扰你们。oracle SQL的外键级联删除怎么写?
feixianxxx 2010-04-18
  • 打赏
  • 举报
回复
现在楼主要清楚自己是想怎么做?你是否需要删除你的关联记录 还是无视外键 继续删除主表记录而保留关联记录
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
--SQL级联删除与级联更新使用格式: 

CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20))

CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT)
百年树人 2010-04-18
  • 打赏
  • 举报
回复
用级联删除,但是这种操作本身有一定的危险性,需要在删除A表的时候提示用户BCD表的数据也会被删掉
feixianxxx 2010-04-18
  • 打赏
  • 举报
回复
业务逻辑上就是这样的 你依赖的东西都没了 附属的产品怎么还能单独存活呢?
htl258_Tony 2010-04-18
  • 打赏
  • 举报
回复
可以通过SQL的外键级联删除功能来完成外键表的分录删除

34,590

社区成员

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

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