Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Example for zao.doc
Скачиваний:
7
Добавлен:
17.02.2016
Размер:
476.67 Кб
Скачать

Створення тригера на delete

Нехай маємо таблицю books з декількома полями. Необхідно створити тригер, який б запобігав видаленню рядків поле rozmir є більшим ніж 350.

Створення тригерної функції

CREATE FUNCTION no_delete () RETURNS trigger AS '

Begin

if old.rozmir>=300 then

RAISE EXCEPTION 'cannot delete ';

END IF;

return OLD;

end;

' LANGUAGE  plpgsql;

CREATE TRIGGER trigger_no_delete AFTER DELETE ON books FOR EACH ROW EXECUTE PROCEDURE no_delete()

Перевірка роботи тригера

DELETE FROM books where rozmir=350

Результат

Помилка SQL:

ERROR: cannot delete

Створення представлень (view) та правил до них

Нехай маємо таблицю oblik. Створимо представлення test_1:

CREATE VIEW test_1 AS

SELECT oblik.gazprovid_id, oblik.kilgaz, oblik.data_

FROM oblik

WHERE oblik.gazprovid_id = 1 OR oblik.gazprovid_id = 2

GROUP BY oblik.gazprovid_id, oblik.kilgaz, oblik.data_;

Оновлення даних в представленні (UPDATE)

Update test_1

Set kilgaz = 2000

where gazprovid_id = 2

Правило:

create rule test_1_update as

on update to test_1 do instead update oblik set kilgaz = new.kilgaz

where gazprovid_id = new.gazprovid_id

Вставка нових значень в представлення (INSERT)

insert into test_1 values (3, 300, '2013-03-13')

Правило:

create rule test_1_insert as

on insert to test_1 do instead insert into oblik values (new.gazprovid_id, new.kilgaz, new.data_)

Видалення даних з представлення (DELETE)

Delete from test_1 where gazprovid_id = 2

Правило:

create rule test_1_delete as

on delete to test_1 do instead delete from oblik where gazprovid_id = old.gazprovid_id

17

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]