Проблема в создании триггера - PullRequest
0 голосов
/ 29 августа 2011

Я создаю триггер, но получаю эту ошибку:

android.database.sqlite.SQLiteException: около "CREATE": синтаксическая ошибка: CREATE TRIGGER fk_item_place ПЕРЕД ВСТАВКОЙ НА CREATE TABLE Item_Place (PlaceIDfkINTEGER, ItemID NTEGER, ИНОСТРАННЫЙ КЛЮЧ (PlaceIDfk) ССЫЛКИ Place_Table (Place_ID) НА УДАЛИТЬ КАСКАД ИНОСТРАННЫЙ КЛЮЧ (ItemID) ССЫЛКИ ContentTable (ContentID));ДЛЯ КАЖДОЙ СТРОКИ НАЧИНАЕТСЯ ВЫБИРАТЬ СЛУЧАЙ КОГДА ((ВЫБЕРИТЕ Place_ID ИЗ Place_Table WHERE Place_ID = new.PlaceIDfk) НЕДЕЙСТВИТЕЛЕН) ПОТОМ ПОДНИМИТЕ (ABORT, «Нарушение внешнего ключа») END;END;

Мой код такой:

db.execSQL("CREATE TRIGGER fk_item_place " +
            " BEFORE INSERT "+
            " ON "+ Item_places +
            " FOR EACH ROW BEGIN "+
            " SELECT CASE WHEN ((SELECT "+ PlaceID +" FROM "+ PlaceTable +" WHERE "+ PlaceID +"=new." + place_id + " ) IS NULL)"+
            " THEN RAISE (ABORT,'Foreign Key Violation') END ;" +
            "  END ;");

Что я делаю не так?

1 Ответ

0 голосов
/ 29 августа 2011

У вас не может быть триггера ON CREATE TABLE. Убедитесь, что Item_places - это имя таблицы, а не DDL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...