Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2014, 21:01   #1
Brandan
Пользователь
 
Регистрация: 17.06.2012
Сообщений: 18
По умолчанию Не Работает Instead Of Insert Триггер, sqlite3

Прошу помочь мне: ни в какую не рабоатет instead of insert триггер, причем другие виды триггеров работаеют. Вот пример:
Допустим у нас есть простая табличка

Код:
create table test(id,num);
То есть всего 2 столбца. Создаю сначала вьюху:

Код:
create view as select * from test;
Затем триггер, которые будет заменять операцию вставки если id будет равен 1 и обновлять столбец num в строчке с id равным 1 на значение 100(бредово, но это тест):

Код:
create trigger trig_test instead of insert on trig when new.id=1 begin update test set num=100 where id=1; end;
Вот не работает ни в какую - если вставляю вот так:
Код:
insert into test(id,num) value(1,200);
то просто вставляет новую строчку, а в строке с id=1 ничего не меняется. И как я тольк не крутил создание триггера, никакого результата.
Brandan вне форума Ответить с цитированием
Старый 11.08.2014, 21:26   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А что за СУБД то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2014, 21:33   #3
mirkul
Пользователь
 
Регистрация: 16.07.2014
Сообщений: 62
По умолчанию

Попробуй:
Код:
...
create view trig as select * from test; //Имя вьюсы не задал

...
create trigger trig_test instead of insert on trig when new.id=1 
begin 
 update test set num=100 
 where id=1; 
end;
...
mirkul вне форума Ответить с цитированием
Старый 11.08.2014, 21:43   #4
Brandan
Пользователь
 
Регистрация: 17.06.2012
Сообщений: 18
По умолчанию

Цитата:
Сообщение от mirkul Посмотреть сообщение
Попробуй:
Код:
...
create view trig as select * from test; //Имя вьюсы не задал

...
create trigger trig_test instead of insert on trig when new.id=1 
begin 
 update test set num=100 
 where id=1; 
end;
...
Спасибо конечно, но ведь я точно так же и делал. Но для сущей точности вставил ваш код - результат тот же(((

Цитата:
Сообщение от Stilet Посмотреть сообщение
А что за СУБД то?
СУБД SqLite3

Последний раз редактировалось Stilet; 11.08.2014 в 21:58.
Brandan вне форума Ответить с цитированием
Старый 11.08.2014, 21:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Brandan
Упс... Это я невнимательно тему прочел. Извиняюс.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2014, 23:05   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

А почему пишется trig, а не test?
Код:
...instead of insert on trig...
После ключевого слова on в триггере указывается таблица или представление. А for each row в конце не нужно указывать? Лезть в доку лень.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает метод insert? ( Связный список на C# ) rehvi Помощь студентам 1 27.03.2013 13:31
ADO.net + ACCESS не работает INSERT INTO Necare Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 24.05.2012 16:27
Java + MySQL (Windows XP) не работает INSERT INTO Osanve Java Базы данных (JDBC, JPA, Hibernate) 10 28.06.2011 10:36
Не работает самый простой триггер nazavrik SQL, базы данных 2 11.06.2009 17:30
не работает триггер aquarelle SQL, базы данных 2 12.03.2009 21:42