sql删除子表和父表中数据,只能delete from 父表 where id=@id和delete from 子表 where id=@id 两个语句

能不能使用一条sql语句... 能不能使用一条sql语句 展开
 我来答
dong_1984dd
推荐于2016-05-09 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:224万
展开全部
  1. 可以使用SQL 触发器来删除子表数据 

  2.   触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有create、alter、drop语句。

  3.  DML触发器分为:  

     after触发器(之后触发)  

      a、 insert触发器  

      b、 update触发器  

     c、 delete触发器

  4. 下面只介绍delete 触发器,SQL 如下:

    --delete删除类型触发器
    if (object_id('tgr_classes_delete', 'TR') is not null)
        drop trigger tgr_classes_delete
    go
    create trigger tgr_classes_delete
    on classes
        for delete --删除触发
    as
        print '备份数据中……';   
        if (object_id('classesBackup', 'U') is not null)
            --存在classesBackup,直接插入数据
            insert into classesBackup select name, createDate from deleted;
        else
            --不存在classesBackup创建再插入
            select * into classesBackup from deleted;
        print '备份数据成功!';
    go

华佗之父
2011-04-12 · TA获得超过1241个赞
知道小有建树答主
回答量:1623
采纳率:0%
帮助的人:1106万
展开全部
可以的,只要写一个删除语句,然后建立一个删除触发器,在触发器里面再删除另一个表就行了。
所以每次你只需要删除一个表,触发器是自动的。
追问
怎么写啊
追答
搜一下,删除触发器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anguangcan
2011-04-12 · TA获得超过135个赞
知道答主
回答量:285
采纳率:0%
帮助的人:152万
展开全部
你可以建个外键啊,不过那只能删除相关外键的数据
更多追问追答
追问
现在是由外键约束的两个表,想删除里面相关的数据
追答
没明白,举个例子........
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aliang888
2011-04-12 · TA获得超过745个赞
知道小有建树答主
回答量:628
采纳率:62%
帮助的人:208万
展开全部
汗,你想表达什么?没看明白
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
foxaobe
2011-04-12 · TA获得超过331个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:613万
展开全部
不能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式