SQLite外键不匹配

时间:2011-04-10 01:56:03

标签: sql sqlite foreign-keys mismatch

我在SQLite数据库上有2个表

CREATE TABLE [Stores] (
  [ID] NVARCHAR(50), 
  [Description] NVARCHAR(255), 
  [GUID] CHAR(36), 
  [Created] DATETIME, 
  [Modified] DATETIME, 
  [Integrated] DATETIME, 
  CONSTRAINT [] PRIMARY KEY ([ID]));

CREATE TABLE [PriceDef] (
  [PriceNumber] INTEGER, 
  [Store] NVARCHAR(50) REFERENCES [Stores]([ID]) ON DELETE CASCADE ON UPDATE CASCADE, 
  [Description] NVARCHAR(50), 
  [Margin] DECIMAL, 
  [GUID] CHAR(36), 
  [Created] DATETIME, 
  [Modified] DATETIME, 
  [Integrated] DATETIME, 
  CONSTRAINT [] PRIMARY KEY ([PriceNumber], [Store]));

当我尝试删除Stores表中的一行时,我收到一条带有此消息的异常:外键不匹配,此时我只有表外存的这个外键。

请帮助:(

提前致谢   PedroSimões。

感谢Mitch,Yar和Tim的回答/评论,实际上很多时间过去了,我的应用程序处于更加先进的状态,问题解决了,就像Tim说的那样,所有实体都被启用/禁用所以我不再需要删除东西了。

1 个答案:

答案 0 :(得分:2)

正如我在评论中写道:我遇到了类似的问题。

问题出在子表中的其他列外键约束而不是“删除级联”本身。

在你的情况下:你确定你的一个表(很可能是一个表)没有参与其他一些外键约束吗?

看起来SQLite在启动其中一个时检查所有约束。它实际上在文档中提到过。 DDL与DML约束检查。