加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver级联更新

发布时间:2020-12-12 14:35:39 所属栏目:MsSql教程 来源:网络整理
导读:? 我们设计数据库经常会设计主表,子表.经常需要删除,修改主表主键,子表做相应的同步.对于删除好处理点:用sql语句先删除子表数据,再删除主表数据.修改就有问题了.如果主表的主键时子表的外键.用sql语句时没法修改的.除非先删除外键约束.我介绍一下在SQL Serve

?我们设计数据库经常会设计主表,子表.经常需要删除,修改主表主键,子表做相应的同步.对于删除好处理点:用sql语句先删除子表数据,再删除主表数据.修改就有问题了.如果主表的主键时子表的外键.用sql语句时没法修改的.除非先删除外键约束.我介绍一下在SQL Server2005中如何非常简单的实现这种需要.我分两种情况:

1.主子表主键不同.子表的外键是主表的主键.

最常见的是:订单表和订单详细表.

脚本:?

  1. Create?Table?ParentDT?--主表??
  2. (??
  3. UserNumb?varchar(20),?--主键??
  4. UserName?varchar(20)??
  5. )??
  6. Table?Child1DT?--子表1??
  7. (??
  8. OrderID?int,??????????--主键??
  9. --外键??
  10. )??

打开:SQL Server Management Studio:设置外主外键后.再按下图设置:?

2.主子表主键相同.

最常见的是:用户表和用户详细表?

??
  • Table?Child2DT?--子表2??
  • --主键,外键??
  • email?tel?varchar(20)??
  • ?特殊点就在于:Child2DT表的UserNumb既是主键又是外键.其它设置和第一中情况一样.

    3.最后说明:

    以上都可使用脚本实现.?

      Table?ParentDT?--主表????
    1. (????
    2. ?UserNumb?varchar(20)?primary?key,?--主键????
    3. ?UserName?varchar(20)????
    4. )????
    5. Table?Child1DT?--子表1????
    6. ?OrderID?--主键????
    7. --外键????
    8. ?CONSTRAINT?[FK_Child1DT_ParentDT]?FOREIGN?KEY([UserNumb])?????
    9. REFERENCES?[dbo].[ParentDT]?([UserNumb])?????
    10. ON?UPDATE?CASCADE????
    11. DELETE?CASCADE???
    12. ) ?

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    • 推荐文章
        热点阅读