zoukankan      html  css  js  c++  java
  • SQL删除多表关联数据的三种方法

    1.级联删除

    sql server版:

     create table a
    ( id varchar(20) primary key, password varchar(20) not null ) create table b ( id int identity(1,1) primary key, name varchar(50) not null, userId varchar(20), foreign key (userId) references a(id) on delete cascade ) 

     mysql版本:

    create table a(
    id varchar(20) primary key,
    password varchar(20) not null);
    
    create table b(
    id int primary key auto_increment,
    name varchar(50) not null,
    userId varchar(20),
    foreign key(userId) references a(id) ON DELETE CASCADE ON UPDATE CASCADE);

    表B创建了外码userId 对应A的主码ID,声明了级联删除

    测试数据:

    sql server版:

    insert a values ('11','aaa');
    insert a values('23','aaa');
    insert b values('da','11');
    insert b values('das','11');
    insert b values('ww','23');

     mysql版本:

    insert a values ('11','aaa');
    insert a values('23','aaa');
    insert into b(name,userId) values('da','11');
    insert into b(name,userId) values('das','11');
    insert into b(name,userId) values('ww','23'); 


    删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了

    delete a where id='11'

    2.采用存储过程
     
    A表:
    AID   Aname                                 主健:AID
    B表:
    BID   BelongAID Bname               主健:BID,外健:BelongAID 
    C表:
    CID BelongBID Cname                  主健:CID,外健:BelongBID
    D表:
    DID BelongCID Dname                  主健:DID,外健:BelongCID
    其中:
    A表和B表通过A.AID和B.BelongAID  创建了外健关系
    B表和C表通过B.BID和C.BelongBID  创建了外健关系
    C表和D表通过C.CID和D.BelongCID  创建了外健关系

     

    3.采用触发器



  • 相关阅读:
    杭电 1548 A strange lift(广搜)
    JAVA数组的定义及用法
    WPF之Binding深入探讨
    FBReaderJ源代码编译配置
    【剑指offer】合并两有序单链表
    对HGE游戏引擎的一次封装
    WAV文件格式分析
    Ubuntu9.04更新源
    内核及内核模块
    java实现第七届蓝桥杯愤怒小鸟
  • 原文地址:https://www.cnblogs.com/supermarrio/p/13253729.html
Copyright © 2011-2022 走看看