Несоответствие внешнего ключа SQLite - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть 2 таблицы в базе данных SQLite

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, я получаю исключение с этим сообщением: несоответствие внешнего ключа, на данный момент у меня есть только этовнешний ключ к столу. Магазины.

Пожалуйста, помогите: (

Заранее спасибо Педро Симойес.

Спасибо Митчу, Яру и Тиму за их ответы / комментарии, фактическиПрошло много времени, и мое приложение находится в более продвинутом состоянии, проблема была решена, как сказал Тим, все объекты включены / отключены, поэтому мне больше не нужно удалять вещи.

1 Ответ

2 голосов
/ 01 сентября 2011

Как я уже писал в своем комментарии: у меня просто была похожая проблема.

Проблема была в в другом ограничении внешнего ключа столбца в дочерней таблице , а не в "каскаде удаления"сам.

В вашем случае: вы уверены, что одна из ваших таблиц (скорее всего, дочерняя) не участвует в некоторых других ограничениях внешнего ключа?

Похоже, SQLite проверяет все ограничения при запускедо одного из них.Это на самом деле упоминается в документации.DDL в сравнении с проверками ограничений DML.

...