Sp表的主键 spbhSpcf表里的spbh 和 cfbh都和Sp表的spbh是主外键关系需要将这两个关系都设置成级联更新 

解决方案 »

  1.   

    用的是 Microsoft SQL Server 2000
      

  2.   

    alter table Spcf
    Add constraint fk_Spcf_spbh_spbh    --约束名
    Foreign key(spbh) references Sp(spbh)
    on update cascade  --级联更新 
    on delete cascade  --级联删除 
    alter table Spcf
    Add constraint fk_Spcf_cfbh_spbh    --约束名
    Foreign key(spbh) references Sp(spbh)
    on update cascade  --级联更新 
    on delete cascade  --级联删除 
      

  3.   

    级联删除参考如下:
    /*
    标题:两表通过字段关联进行级联删除。
    作者:爱新觉罗·毓华(十八年风雨,守得冰山雪莲花开) 
    时间:2008-11-20
    地点:广东深圳
    */create table ta(id int not null)
    create table tb(id int , aid int)
    insert into ta values(1)
    insert into ta values(2)
    insert into tb values(1 , 1)
    insert into tb values(2 , 2)
    insert into tb values(3 , 1)
    go--一、查看原始数据
    --ta表的原始数据
    select * from ta
    /*
    id          
    ----------- 
    1
    2
    */
    --tb表的原始数据
    select * from tb
    /*
    id          aid         
    ----------- ----------- 
    1           1
    2           2
    3           1
    */--二、看看没有创建级联删除时的情况(删除ta表id=1的数据,看看是否影响tb表)
    delete from ta where id = 1
    select * from ta
    /*
    id          
    ----------- 
    2
    */
    select * from tb
    /*
    id          aid         
    ----------- ----------- 
    1           1
    2           2
    3           1
    */--三、恢复原始数据,创建级联删除,删除ta表id=1的数据,看看是否影响tb表
    insert into ta values(1)
    --为ta创建主健
    alter table ta add constraint pk_ta_id primary key (id)
    go
    --为tb创建外健,并指定级联删除
    alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascade
    go
    delete from ta where id = 1
    select * from ta
    /*
    id          
    ----------- 
    2
    */
    select * from tb
    /*
    id          aid         
    ----------- ----------- 
    2           2
    */--删除级联约束
    alter table tb drop constraint fk_tb_aid
    go
    --删除测试表
    drop table ta , tb
    go
      

  4.   

    sqlserver 支持级联更新和删除oracle 只支持级联删除 alter table 表名
    add constraint 约束名
    foreign key(字段名) references 主表名(字段名)
    on delete cascade语法:
    Foreign Key
    (column[,...n])
    references referenced_table_name[(ref_column[,...n])]
    [on delete cascade]
    [on update cascade]
    注释:
    column:列名
    referenced_table_name:外键参考的主键表名称
    ref_name:外键要参考的表的主键列
    on delete:删除级联
    on update:更新级联 
    表的外键约束 SELECT 外键表ID=b.fkeyid 
    ,外键表名称=object_name(b.fkeyid) 
    ,外键列ID=b.fkey 
    ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) 
    ,主键表ID=b.rkeyid 
    ,主键表名=object_name(b.rkeyid) 
    ,主键列ID=b.rkey 
    ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) 
    FROM sysobjects a 
    join sysforeignkeys b on a.id=b.constid 
    join sysobjects c on a.parent_obj=c.id 
    where a.xtype='f' AND c.xtype='U'   
        
        
        
    查询一个表的所有外键: SELECT 主键列ID=b.rkey 
    ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) 
    ,外键表ID=b.fkeyid 
    ,外键表名称=object_name(b.fkeyid) 
    ,外键列ID=b.fkey 
    ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) 
    FROM sysobjects a 
    join sysforeignkeys b on a.id=b.constid 
    join sysobjects c on a.parent_obj=c.id 
    where a.xtype='f' AND c.xtype='U' 
    and object_name(b.rkeyid)='要查询的表名'