Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Триггкр обновления / 4 сообщений из 4, страница 1 из 1
25.12.2014, 11:14
    #38842499
Alexzandr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггкр обновления
Здравствуйте. Помогите пожалуйста с написанием тригера для изменения значения в таблице. Изменяемое значение должно быть меньше чем максимальное значение первичного ключа. Спасибо.
...
Рейтинг: 0 / 0
25.12.2014, 12:09
    #38842613
Alexzandr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггкр обновления
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE test
(
id integer NOT NULL
param integer
PRIMARY KEY(id)
)

INSERT INTO test (id, param) VALUE (1, 1)
INSERT INTO test (id, param) VALUE (2, 1)
INSERT INTO test (id, param) VALUE (3, 1)
INSERT INTO test (id, param) VALUE (4, 1)



Собственно, при изменении param, нужно проверить, что его новое значение не будет больше, чем максимальное значение id. Я так понимаю это должен делать триггер. Только пока не пойму, как это реализовать.
...
Рейтинг: 0 / 0
25.12.2014, 16:54
    #38843152
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггкр обновления
Alexzandr,

Примерно так моё видение, если решать задачу в лоб.
Код: sql
1.
2.
3.
4.
5.
6.
7.
create trigger upd_test before update on [test]
for each row
begin
     select case when new.param >= (select max(id) from test) then
                 raise(ABORT, 'Param field is wrong')            
            end;
end
...
Рейтинг: 0 / 0
25.12.2014, 17:00
    #38843161
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггкр обновления
Так красивее и наверное получше
Код: sql
1.
2.
3.
4.
5.
create trigger upd_test before update on [test]
for each row when new.param >= (select max(id) from test)
begin
     select raise(ABORT, 'Param field is wrong');           
end
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Триггкр обновления / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]