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

能不能使用一条sql语句
2024-12-29 00:22:00
推荐回答(5个)
回答1:

  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

回答2:

可以的,只要写一个删除语句,然后建立一个删除触发器,在触发器里面再删除另一个表就行了。
所以每次你只需要删除一个表,触发器是自动的。

回答3:

你可以建个外键啊,不过那只能删除相关外键的数据

回答4:

汗,你想表达什么?没看明白

回答5:

不能