Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

БД sqlite. При удалении элемента из родительской таблицы, не удаляются элементы из дочерних таблиц

88K
24 января 2013 года
nvrrus
1 / / 24.01.2013
Здравствуйте, уважаемые форумчане!

Есть три таблицы связанные между собой, ниже скрипты создания этих таблиц (кусок скрипта в lua):


Код:
CreateClassificators = ""
    .."    CREATE TABLE  IF NOT EXISTS CLASSIFICATORS ("
    .."      [CL_ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,"
    .."      [CL_NAME] TEXT, "
    .."      [CL_FOREIGN_OWNER] INTEGER);",
    CreateTrees = ""
    .."   CREATE TABLE IF NOT EXISTS TREES ("
    .."    [TREE_ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK AUTOINCREMENT CONSTRAINT [PART] UNIQUE ON CONFLICT ROLLBACK,    "
    .."    [CL_ID] INTEGER CONSTRAINT [FK_TREES_REFERENCE_CLASSIFICATORS] REFERENCES [CLASSIFICATORS]([CL_ID]) ON DELETE CASCADE ON UPDATE CASCADE,"
    .."    [PARENT_TREE_ID] INTEGER, "
    .."    [TREE_NAME] TEXT, "
    .."    [DATE_OF_CREATION] DATA, "
    .."    [EXTERNAL_ID] INTEGER, "
    .."    [TREE_CHANGEABLE] INTEGER, "
    .."    [SIGNATURE_STAMP] INTEGER, "
    .."    [TYPE_ID] INTEGER, "
    .."    [TREE_PROPERTIES_ID] INTEGER, "
    .."    [CLOSED] INTEGER);",
    CreateAccords = ""
    .."    CREATE TABLE  IF NOT EXISTS ACCORDS ("
    .."    [AC_ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK AUTOINCREMENT,  "
    .."    [DOC_ID] INTEGER NOT NULL CONSTRAINT [FK_ACCORDS_REFERENCE_DOCUMENTS] REFERENCES [DOCUMENTS]([DOC_ID]) ON DELETE CASCADE ON UPDATE CASCADE,"
        .."    [TREE_ID] INTEGER NOT NULL CONSTRAINT [FK_ACCORDS_REFERENCE_TREES] REFERENCES [TREES]([TREE_ID]) ON DELETE CASCADE ON UPDATE CASCADE);",
Таблицы связаны между собой - CLASSIFICATORS - Родительская таблица
связана с дочерней TREES, через CL_ID
а TREES в свою очередь связана с дочерней ACCORD, через TREE_ID


добавляю в эти таблицы связанные элементы
удаляю элемент из CLASSIFICATOR двумя способами:
1) через выполнение запроса из скрипта Lua
DELETE FROM CLASSIFICATORS WHERE CL_ID = :CL_ID;

в резьтате удаляется элемент из таблицы CLASSIFICATOR, НО СВЯЗАННЫЕ С НИМ ЭЛЕМЕНТЫ ИЗ ДОЧЕРНИХ ТАБЛИЦ (TREES, ACCORDS)НЕ УДАЛЯЮТСЯ

2) через СУБД sqllite
в результате получаю ошибку: "foreign key mismatch"


Кто-нибудь сталкивался с этой проблемой? Подскажите, пожалуйста, решение.
Буду очень признателен...

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог