您好我正在使用sqlite3进行AM1808的数据库管理。 我创建了一个名为MilkRateChartEditDetail的新表。
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:'约束失败'
我无法理解这是什么问题? 我怎么能摆脱这个?
答案 0 :(得分:0)
您设置了很少的外键(简称FK)约束,并且您还有主键约束。
如果您尝试使用相同的主键(MilkRateChartEditDetailId
)插入记录,或者使用外部表中不存在的FK(MilkRateChartId
或UpdatedBy
)的某些值,您将收到此错误消息。
解决方案是仔细查看这些FK和PK是否正确使用,或者放弃它们。