A表的F1和F2字段关联,删除时会提示出错消息 547,级别 16,状态 1,第 1 行
DELETE 语句与 SAME TABLE REFERENCE 约束"FK_ORG_POSI_FK_ORG_PO_ORG_POS2"冲突。该冲突发生于数据库"TEST",表"dbo.A", column F2。这要如何处理啊???因为关联的表很多..

解决方案 »

  1.   

    --参考:--例如
    create table zb --主表
    (
    zb_id int  primary key,
    )gocreate table  cb --从表
    (
    cb_id int   primary key 
                FOREIGN KEY REFERENCES zb(zb_id) ON DELETE CASCADE , --指定级联删除
    )
    go--主表数据
    insert zb values(1)
    insert zb values(2)
    insert zb values(3)
    --从表数据
    insert cb values(1)
    insert cb values(2)
    insert cb values(3)
    select * from zb
    select * from cb
    zb_id       
    ----------- 
    1
    2
    3(所影响的行数为 3 行)mx_id       
    ----------- 
    1
    2
    3(所影响的行数为 3 行)
    --级联删除
    delete from zb where zb_id = 1
    select * from zb
    select * from cb
    zb_id       
    ----------- 
    2
    3(所影响的行数为 2 行)mx_id       
    ----------- 
    2
    3
    (所影响的行数为 2 行)alter table cb  add constraint fk_cb foreign key(mx_id) references zb(zb_id) on delete cascadealter table 从表  add constraint 外键名 foreign key(从表字段) references 主表(主表字段) on delete cascade
      

  2.   

    A表有很多外键表,是SQL2005的
    属性是强制外键约束:是   强制用于复制:是
    更新规则和删除规格均为:无操作..
    这样就没有级联删除的吧...如果是其他表,就把外键的表删了再删主表,这样没问题
    可现在是它的外键表是和主键表同个表 该如何解决啊?
      

  3.   

    是约束没错,如果一表和另一表约束关联还可以理解,删除外表再删除主表,这样是正常的.. 
    但是现在是同一个表的两个字段关联建立约束...这该怎么删?你的约束条件是什么样子呢
    ! 个人理解 先用UPDATE  把那字段改一下再删除
      

  4.   

    外键约束,如果你不想把从表中的数据也删除的话,那么请去掉外键约束,如果想一起删除的话,那么请参考下面的语句create table manager(
    …………………………
    foreign key(school_id) references school(school_id)
    on delete cascade)create table school(
    school_id smallint identity(1,1),
    ……………………
    primary key(school_id))这样当你删除school表的数据的时候,在manager中school_id相关联的数据也将被删除。
      

  5.   

    那我的DELETE 语句要如何写?
    比如我A表的F1字段和F2字段想关联
    F1是主键,F2是外键。。如何删A表的一条记录?
      

  6.   

    关联属性如图所示
    删除该表时会提示:消息 547,级别 16,状态 0,第 1 行
    DELETE 语句与 SAME TABLE REFERENCE 约束"Fk_PA_ItemParent1"冲突。该冲突发生于数据库"aaa",表"dbo.t_PA_Item", column 'FParentID'。
    语句已终止。
      

  7.   

    试了一下
    情况很复杂
    不容易删掉create table a ( a int primary key ,b int ,c int foreign key references a)
    insert into a select 1,2,1
    union all select 2,3,1
    union all select 3,3,2
    union all select 4,3,3
    union all select 5,3,4
    union all select 6,3,5select * from adelete from a
    where c=2--外健关联的也删不掉
    delete from a
    where a=2--想要删除的--drop table a-- create table a ( a int primary key ,b int ,c int foreign key references a on delete cascade)
    -- 1785 16 将 FOREIGN KEY 约束 ''%1!'' 引入表 ''%3!'' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。 
    关注顶一下
      

  8.   

    用FK_ORG_POSI_FK_ORG_PO_ORG_POS2通过sysreferences\sysforeignkeys

    sysindexkeys

    syscolumns
    关系得到
    或在企业管理器里查看
      

  9.   

    直接用truncate table tablename
      

  10.   

    晕死了 truncate  是全部删除吧。。这怎么行!
      

  11.   

    我也遇到同样的问题啊,就是啊在同一张表上建立自引用关系!然后删除表记录时报错误,而且在用poweredesigner建立同一张表的级联删除和更新时又不让建立这样的关系,真是晕死啊!