триггер на первой таблице, который удаляет соответствующие строки.

оя первая таблица, в ней 3 столбца, и все они вводятся пользователем. Никаких осложнений, и все работает отлично. Но есть другая таблица, и она зависит от этой таблицы в 3-м столбце. т.е. в колонке с номером комнаты. Пожалуйста, игнорируйте соглашение об именах, так как я не следовал никаким соглашениям об именах.

Это моя вторая таблица, и, как вы можете видеть, последняя колонка имеет номер комнаты. пожалуйста, игнорируйте соглашение об именах. этот столбец номера комнаты является внешним ключом, он зависит от 1-й записи таблицы или удаляется. Теперь я создал схему для 2-й таблицы. который объявляет, что у него есть 5 столбцов, и последний является внешним ключом.

 private static final String DATABASE_CREATE_NOTES_ID_TABLE =
    ("CREATE TABLE "+ DATABASE_NOTES_TABLE +" ("+ KEY_ROWID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+
            KEY_TIME + " TEXT, "+ 
            KEY_NOTES + " TEXT, "+ 
            KEY_DATE +  " TEXT, " +
            KEY_ROOMS + " INTEGER , FOREIGN KEY (" + KEY_ROOMS + ") REFERENCES " + DATABASE_PATIENT_TABLE +" (" +KEY_ROOM_NUMBER+ "));");

Таблицы, как вы видите, создаются успешно. Теперь мне нужно написать оператор TRIGGER, основываясь на том, что когда я удаляю номер комнаты из первой таблицы, тогда все строки во 2-й таблице, имеющие одинаковый номер комнаты, должны быть удалены. И если я добавлю новый номер комнаты в первую таблицу, то он должен быть добавлен во 2-й таблице. Оператор триггера для вставки нового номера комнаты, который я написал, выглядит следующим образом

    db.execSQL("CREATE TRIGGER fk_notesTable_roomNumber " +
                " BEFORE INSERT "+
                " ON "+DATABASE_NOTES_TABLE+
                " FOR EACH ROW BEGIN"+
                " SELECT CASE WHEN ((SELECT "+KEY_ROOM_NUMBER+" FROM "+DATABASE_PATIENT_TABLE+" WHERE "+KEY_ROOM_NUMBER+"=new."+KEY_ROOMS +" ) IS NULL)"+
                " THEN RAISE (ABORT,'Foreign Key Violation') END;"+
                "  END;");

Этот кусок кода я добавил в onCreate () моего файла базы данных. Что еще мне делать? Здесь ничего не происходит. Пожалуйста, укажите мне, где я делаю ошибку. Спасибо в тоннах, Шайста

Ответы на вопрос(1)

Ваш ответ на вопрос