crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в тригеры в SQLite, немогу написать
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Tonal Дата 6.2.2009, 11:11
  Ага.
Litkevich Yuriy Дата 6.2.2009, 9:00
  ... FOR EACH ROW WHEN...
про эту?
Tonal Дата 6.2.2009, 8:49
  Ты таки попялься на синтаксическую диограмму для триггера и попробуй понять о каком именно when я писал. :)
Litkevich Yuriy Дата 5.2.2009, 12:15
  я пытался еще так сделать
CREATE TEMPORARY TRIGGER TBI_tmp
    BEFORE INSERT ON tmp
BEGIN 
        /* проверим существует ли такой тип в таблице TypeRef */
    CASE 
    WHEN (NOT EXISTS(SELECT Type FROM TypeRef WHERE Type = new.Type)) THEN
            INSERT INTO TypeRef (Type) VALUE (new.Type);
    END
END;
Но получил совсем неожиданную ошибку: "Нет такой таблицы TypeRef", хотя селект отдельно работает (проверял копированием дабы избежать опечаток), разумеется условие было жесткое.

Цитата(Tonal @ 5.2.2009, 14:52) *
Если нет - можно написать явно в коде или воспользоваться
да я в sqlbrowser'сижу, так что в коде ни чего не делается :)

Я просто действия пытаюсь постичь, которые мне понядобятся при обработке данных
Tonal Дата 5.2.2009, 11:52
  Возможно подойдёт when кляуза.
Если нет - можно написать явно в коде или воспользоваться хуками.
Litkevich Yuriy Дата 5.2.2009, 11:19
  Нужен такой тригер в SQLite:
CREATE TRIGGER TBI_tmp
    BEFORE INSERT ON tmp
BEGIN 
        /* проверим существует ли такой тип в таблице TypeRef */
    IF (NOT EXISTS(SELECT Type FROM TypeRef WHERE Type = new.Type))THEN
        INSERT INTO TypeRef (Type) VALUE (new.Type);
END;


Первичная Цель:
Есть табличка (TypeRef), отчасти заполненая, мне нужно добавить в нее из другой БД пачку данных, но только тех, которых еще нет (по полю Type).

я ни чего умнее не придумал как сделать временную таблицу (tmp) совать в нее данные и тригером проверять если таких еще нет в основной (TypeRef), то вставить их туда.

Грабля:
ключевого слова IF нет в SQLite (ни в доке и запрос тоже на него возмущается).

Как выйти из положения?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 16.7.2025, 9:15