sql级联修改删除

sql级联修改删除

ID:20346027

大小:32.50 KB

页数:4页

时间:2018-10-09

sql级联修改删除_第1页
sql级联修改删除_第2页
sql级联修改删除_第3页
sql级联修改删除_第4页
资源描述:

《sql级联修改删除》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、--sql语句实现级联修改和删除 --此代码有点危险,,级联删除少用,,不然到时连数据表中记录怎么少了都不知道 ALTER  TABLE [tablename]  DROP  CONSTRAINT FK_nameALTERTABLE[tablename]addCONSTRAINT[FK_name]FOREIGNKEY(   [fk_tableid])REFERENCES[pk_tablename](   [pk_tableid])onupdatecascadeondeletecascade 如果,现在有两张表A(id,xx

2、.xx...),C(id,Cid,xx,xx...),预实现C中的id与A中id级联删除、级联更新/数据同步,可有两种实现方式:一.利用sqlserver自带的级联删除、级联更新功能,即其外键约束途径  altertabledbo.CaddconstraintFK_C_A_AIDforeignkey(AID)referencesdbo.A(AID)ondeletecascadeon updatecasadego  altertabledbo.CaddconstraintFK_C_B_BIDforeignkey(BID)re

3、ferencesdbo.B(BID)ondeletecascadeon updatecasadego     级联更新和级联删除方式:AlterTABLE[dbo].[T_USERGROUP]ADD       CONSTRAINT[FK_T_USERGROUP_T_ACCTTEMPLATE]FOREIGNKEY       (               [ATNAME]       )REFERENCES[dbo].[T_ACCTTEMPLATE](               [ATNAME]       )ONUp

4、dateCASCADEONDeleteCASCADE  二、另外,我们也完全可以自已写一个触发器来实现此功能             A:     intid     varchar(20)name        C:    intid     intCid     varchar(100)info     假设表A、C的字段如上:     如以级联删除表A、C记录为例,实现语句如下:    (如果删除表A中的记录,则自动删除表C中与表A中id相同的记录)     CREATE  TRIGGERtrg_aONAFORINS

5、ERT,UPDATE,DELETEASBEGIN             DECLARE@nInsRows  INT  --用于插入记录条数统计             DECLARE@nCount  INT    --用于删除记录条数统计                       DECLARE@nCOde  INT     --删除的记录 --统计插入的的记录数并存放在@nInsRows里面 SELECT@nInsRows=COUNT(*) FROMINSERTED --统计删除的记录数并存放在@nCount里面 S

6、ELECT @nCount=COUNT(*) FROM DELETED            IF(@nCount>0)      BEGIN      delete  C  from  deleted   where C.id=deleted.id                         END             IF(@nInsRows>0AND@nCount=0)   --如果是插入数据 BEGIN    insertintoCselect*frominserted END           IF(@

7、nInsRows>0AND@nCount>0)   --如果是更新数据 BEGIN   select@nCOde=idfrominserted   IFEXISTS(select*fromCwhereC.id=@nCOde)    BEGIN     updateCsetC.id='xx'whereid=@nCOde)    END   ELSE   BEGIN       insertintoCselect*frominserted   END END END     另外,下面的一段文字值得体会:  在MSSQLSer

8、ver中,我们可能会遇到这样的问题:在触发器中,需要把新插入记录中的某些字段值作为参数去操作另一些记录。举例:建一条消息的同时,追加给每个用户一个未读状态,每个用户都有自己的阅读状态。A消息表B用户表C状态表 我们在为A表追加记录的同时,需要为C表追加与B表用户数一样多的用户阅读状态表。解决这个问题,我

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。