SQL 2005级联修改删除的问题

bsetsail 2013-01-05 03:23:42
表间的外键关系可以级联修改和删除,在本表内部建立的外键关系是不是不能级联修改和删除呢?
...全文
353 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
szm341 2013-01-05
  • 打赏
  • 举报
回复
实验了一下,确实不行,呵呵,循环嵌套有危险啊 消息 1785,级别 16,状态 0,第 1 行 将 FOREIGN KEY 约束 'fk_test_a_id' 引入表 'test_a' 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
曲军昌 2013-01-05
  • 打赏
  • 举报
回复
最好是在“数据库关系图”中建立,添加主表student(Id,Name,ClassId)和从表class(ClassId,ClassName) 然后将从表class的主键ClassId“小钥匙”图标拖拽到主表student上,在出现的对话框中:左侧是主键表class(ClassId),右侧是外键表student(ClassId)。命名符合规范以FK开头。 错误信息: DELETE 语句与 REFERENCE 约束"FK_OrderBook_Order"冲突。该冲突发生于数据库"MyBookShop",表"dbo.OrderBook", column 'OrderID'。 语句已终止。 问题: 如何实现级联删除效果? 解决方法: 设置完成后,为了实现删除从表的记录时主表中的外键数据一起删除的级联效果,可以在“属性-数据库设计-INSERT和UPDATE规范”中将“更新规则”和“删除规则”中选择“层叠”。 注意:所有涉及到的表都要设置“层叠”。
开启时代 2013-01-05
  • 打赏
  • 举报
回复
表内部外键关系 ,不可以级联操作。
szm341 2013-01-05
  • 打赏
  • 举报
回复
理论上应该可以,没有实践过这个情况,会产生递归删除吧
以前用Sql Server只会对图形界面进行操作,现在发现自己的Sql语言功底是越来越差了,例如如何为两个表添加关联,让他们级联更新和级联 删除。 到晚上查了一下,发现可以用两种办法 触发器方式: create trigger trg_A on A for update,delete as begin if exists(select 1 from inserted) update B set Name=(select Name from inserted) where Name=(select Name from deleted) else delete B where Name=(select Name from deleted) end go 级联更新和级联删除方式: ALTER TABLE [dbo].[T_USERGROUP] ADD CONSTRAINT [FK_T_USERGROUP_T_ACCTTEMPLATE] FOREIGN KEY ( [ATNAME] ) REFERENCES [dbo].[T_ACCTTEMPLATE] ( [ATNAME] ) ON UPDATE CASCADE ON DELETE CASCADE ---------------------------------------------------------------------------------------------------------------------------- 如果,现在有两张表A(id,xx.xx...),C(id,Cid,xx,xx...),预实现C中的id与A 中id级联删除级联更新/数据同步,可有两种实现方式: 一. 利用sql server自带的级联删除级联更新功能,即其外键约束途径 alter table dbo.C add constraint FK_C_A_AID foreign key(AID) references dbo.A(AID) on delete cascade on update cascade go alter table dbo.C add constraint FK_C_B_BID foreign key(BID) references dbo.B(BID) on delete cascade on update cascade go 级联更新和级联删除方式: Alter TABLE [dbo].[T_USERGROUP] ADD CONSTRAINT [FK_T_USERGROUP_T_ACCTTEMPLATE] FOREIGN KEY ( [ATNAME] ) REFERENCES [dbo].[T_ACCTTEMPLATE] ( [ATNAME] ) ON Update CASCADE ON Delete CASCADE

34,838

社区成员

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

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