如何保持像外键一样的级联更新,但不对它进行删除

zyhtz 2003-10-09 04:34:57
如何做到这样:
两个表中的字段,如何做到能像主键对外键一样保持级联更新
但删除主键的值不对外键的值产生影响
如果设置主键和外键可以设置级联更新,
但不设置级联删除,而希望删除主键里的值但不删除和主键相同的外键的值
这样如果设置主键和外键,则会提示违反约束。
应该如何办到,通过外键好像行不通
...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyhtz 2003-10-10
  • 打赏
  • 举报
回复
不设置级联更新当主键和外键有相同的值时,能删除主键的行?
伍子V5 2003-10-10
  • 打赏
  • 举报
回复
你那样做,不是破坏了数据参照完整性了么

create trigger tr_name on 主表
for update
as
update 从表 set 关联字段=a.关联字段 from inserted a
killxtt 2003-10-09
  • 打赏
  • 举报
回复
晕了,只设置级联更新不设置级联删除就可以达到这个目的了啊,怎么会报错呢,你是不是这个主键表还和另外的表关联了阿
实在不行你就用触发器吧。
看联机丛书的create trigger条目
zyhtz 2003-10-09
  • 打赏
  • 举报
回复
我是想删除主键里的值,但不删除外键里的值,但同时保持级联更新
就是这样
不好意思,刚刚没表达清楚
好像这样不能设置主键和外键
zjcxc 元老 2003-10-09
  • 打赏
  • 举报
回复
仅设置为级联更新就行了.

如果是7.0,就用触发器处理
伍子V5 2003-10-09
  • 打赏
  • 举报
回复
我越来越迷糊了
你不是本来就要求不能级连删除么
干嘛又要删除主键里的记录
zyhtz 2003-10-09
  • 打赏
  • 举报
回复
单设置级联更新,但是删除主键所在行时会出错,它不充许删除主键所在表和外键所在表里共有的行。就是这个值主键表里有,外键所在表里也有,就不能在主键里删除它,当不设置级联删除时
pbsql 2003-10-09
  • 打赏
  • 举报
回复
SQL2000里可只设置级联更新,不设置级联删除
aierong 2003-10-09
  • 打赏
  • 举报
回复
2个表不用利用主外键关系就可以啦

要它们间发生关系,可以利用触发器
伍子V5 2003-10-09
  • 打赏
  • 举报
回复
不会吧,你单设置级连更新也可以嘛

另外可以用触发器
以前用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,874

社区成员

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

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