在做数据库设计的时候,我经常遇到,删除约束的问题,却一直没有好的解决办法,如下例:三个表:表1(文章类型表):TypeTypeId(PK) | Name
-------------------
1 军事新闻
2 科技新闻
3 体育新闻
..............表2(文章表): Articles
ArticleId(PK) | TypeId(FK) | Title | Editor |......
----------------------------------------------------
1 1 aaaa 1
2 2 bbbb 2
3 2 cccc 3
4 3 dddd 2 表三(用户表):Users
UserId(PK) | UserName |.....
--------------------------------
1 zhaou
2 yanglin
3 masi问题:
1,当删除文章类别时,删除该类别下的文章,我觉得这个可以理解和接受
2,但删除用户时候,删除该用户关联的文章,我就觉得不可以理解,总感觉这样不妥当,当又找不到好的处理方案期待:
有没有高手提出好的解决方案
-------------------
1 军事新闻
2 科技新闻
3 体育新闻
..............表2(文章表): Articles
ArticleId(PK) | TypeId(FK) | Title | Editor |......
----------------------------------------------------
1 1 aaaa 1
2 2 bbbb 2
3 2 cccc 3
4 3 dddd 2 表三(用户表):Users
UserId(PK) | UserName |.....
--------------------------------
1 zhaou
2 yanglin
3 masi问题:
1,当删除文章类别时,删除该类别下的文章,我觉得这个可以理解和接受
2,但删除用户时候,删除该用户关联的文章,我就觉得不可以理解,总感觉这样不妥当,当又找不到好的处理方案期待:
有没有高手提出好的解决方案
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