2016-11-29 109 views
1

我得到的错误DELETE语句冲突参考约束

DELETE语句冲突与基准约束 FK_DocYDocument1 - 表DocYDocument,列SubDocID - 声明: DELETE FROM文档WHERE(?ID =)参数: 'D7FAA3CF ......'

表DocYDocument有列

PK ID, FK DocID and FK SubDocID. 
And the keys PK_DocYDocument, FK_DocYDocument and FK_DocYDocument1. 

FK_DocYDocument1外键列是SubDocID,而FK_DocYDocument外键列是DocID。

数据库设计是否存在问题,或者我是否在程序中寻找错误?

回答

5

您有DocYDocument中的行指的是您尝试删除的DOCUMENT

你必须要么匹配DocID

DELETE FROM DocYDocument WHERE DocID = ? 
DELETE FROM DOCUMENT WHERE ID = ? 

删除DocYDocument行或改变约束要做到这一点自动

ALTER TABLE DocYDocument 
    DROP CONTRAINT FK_DocYDocument; 
ALTER TABLE DocYDocument 
    ADD CONSTRAINT FK_DocYDocument 
    FOREIGN KEY (DocID) 
    REFERENCES DOCUMENT (ID) 
    ON DELETE CASCADE; 

如果DocID是空的,你可以改为做ON DELETE SET NULL,如果你希望。

相关问题