2013-02-22 35 views
0

您好,我正在使用sqlite3进行数据库管理我的AM1808。 我创建了一个名为MilkRateChartEditDetail的新表。Sqlite3给出“错误:约束失败” - 连接到AM1808

const char *SQL_CREATE_MILKRATECHARTDETAILEDITTABLE = 
"CREATE TABLE IF NOT EXISTS MilkRateChartEditDetail (\ 
    MilkRateChartEditDetailId INTEGER, \ 
    MilkRateChartId   INTEGER \ 
     REFERENCES MilkRateChart(MilkRateChartId) \ 
     ON UPDATE RESTRICT ON DELETE RESTRICT, \ 
    EffectiveDate   DATE, \ 
    EffectiveShift   UNSIGNED TINYINT, \ 
    MilkType    UNSIGNED TINYINT, \ 
    RCD_RateChartId   UNSIGNED INT,\ 
    SocietyCode    STRING, \ 
    RateType    STRING, \ 
    FAT      FLOAT, \ 
    LRCLR     FLOAT, \ 
    SNF      FLOAT, \ 
    Solid     FLOAT, \ 
    Rate     FLOAT, \ 
    NewRate     FLOAT, \ 
    UpdatedBy    INTEGER \ 
     REFERENCES UserMaster(UsermasterId) \ 
     ON UPDATE RESTRICT ON DELETE RESTRICT, \ 
    UpdatedOn    DATE, \ 
    FlagGSM     UNSIGNED TINYINT, \ 
    FlagUSB     UNSIGNED TINYINT, \ 
    PRIMARY KEY (MilkRateChartEditDetailId))"; 

现在我试图插入数据到表中使用下面的查询。

const char *INSERT_MILKRATECHARTEDITDETAILTABLE = 
    "INSERT INTO MilkRateChartEditDetail \ 
     (MilkRateChartEditDetailId,MilkRateChartId, \ 
     EffectiveDate,EffectiveShift,MilkType, \ 
     RCD_RateChartId,SocietyCode,RateType, \ 
     FAT,LRCLR,SNF,Solid,Rate,NewRate, \ 
     UpdatedBy,UpdatedOn,FlagGSM,FlagUSB) \ 
    VALUES(NULL,?,?,?,?,?,?,?,?,?,?,?,?,?,NULL,?,?,?)"; 

我的数据是:

RateChartId : 1 
EffectiveDate : 10-12-2012 
Shift : E 
RateType : FAT 
MilkRateChartId : 30 
FAT : 11.100000 
SNF : 0.000000 
Solid : 0.000000 
CLR : 0.000000 
Updatedby : 1 
MilkType : C 
Rate : 0.000000 
NewRate : 0.000000 

我正在一个错误:

INSERT MILKRATECHARTEDITDETAILTABLE, ENTRY :'constraint failed'

我不明白是什么问题? 我怎么能摆脱这个?

+0

调试后我发现我卡​​在sqlite3_step() – 2013-02-22 07:17:26

回答

0

您已经设置了少量外键(简称FK)约束,并且还有主键约束。

如果你想插入记录具有相同主键(MilkRateChartEditDetailId),或使用FK不对外表存在一些值(MilkRateChartIdUpdatedBy),你将有此错误消息。

解决方法是仔细观察这些FK和PK是否正确使用或放下它们。

+0

是的,谢谢。最后我得到了我的问题。我已经使用FK(MilkRateChartId)作为FK与其他表一起使用。但我的问题是,有没有可能与此表一起使用此FK。现在我删除了FK(MilkRateChartId)约束,它工作得很好,但仍然没有解决我的问题。 – 2013-02-22 08:32:00

+0

好吧,我得到了解决方案。现在,它与FK(MilkRateChartId)一起工作得非常好。实际上,我只是将PK绑定在桌子上。我认为这是一个问题,现在我得到了解决方案。 – 2013-02-22 09:00:57

+0

很高兴你知道了! :) – mvp 2013-02-22 09:01:58

相关问题