Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизОбновление VIEW Найти похожие ветки
← →
Виталий Панасенко (2004-09-07 18:18) [0]Можно-ли (и если да, то как) обновить такую вьюху:
create view docview as
select
doc_id,
doc_type_id,
doc_date,
doc_num,
client_id,
doc_sum
from documents d, globsets g
where extract(month from D.doc_date)=g.org_mperiod and
extract (year from d.doc_date)=g.org_yperiod ;
Использую для доступа FIBPlus
← →
Zacho © (2004-09-08 07:04) [1]Можно любую. Для этого нужно создать соответствующие триггера для этого view.
← →
Виталий Панасенко (2004-09-08 09:32) [2]Секундочку.. триггера ведь срабатывают до или после обновления таблицы ? или я ошибаюсь ? получается, нужно, в данном случае, иметь доступ к DOCUMENTS (это интересует).. Но там хранятся данные за весь период...можно (если есть) ссылку на пример самый элементарный ?..
← →
Zacho © (2004-09-08 09:52) [3]Нужно написать триггера BEFORE INSERT (если хочешь чтобы можно было вставлять в VIEW), BEFORE UPDATE (если хочешь чтобы можно было делать UPDATE VIEW), BEFORE DELETE (если хочешь чтобы можно было удалять из VIEW).
Простейший пример - немного позже, сейчас у меня под рукой похоже ничего такого нет.
← →
stud © (2004-09-08 10:02) [4]триггеры создаются для представления, в них описываются действия которые происходят при соотв. запросах для представления
← →
Виталий Панасенко (2004-09-08 10:09) [5]Спасибо...
← →
Виталий Панасенко (2004-09-08 10:17) [6]Только если честно, не совсем понятно (или совсем не понятно :-) ))
← →
Zacho © (2004-09-08 10:19) [7]Ну вот простейший пример. DISTINCT там нужен только для того, чтобы view стало not updatable.
Кстати, IBExpert сам может создавать триггера для view/* View: VW_BANK */
CREATE VIEW VW_BANK(
BIK_BANK,
NAME_BANK,
SHORT_NAME_BANK,
CLASSIF_BANK,
COMMENT_BANK)
AS
select distinct
BIK_BANK,
NAME_BANK,
SHORT_NAME_BANK,
CLASSIF_BANK,
COMMENT_BANK
from BANK;
/******************************************************************************/
/*** Triggers ***/
/******************************************************************************/
SET TERM ^ ;
/* Trigger: VW_BANK_BD */
CREATE TRIGGER VW_BANK_BD FOR VW_BANK
ACTIVE BEFORE DELETE POSITION 0
AS
BEGIN
DELETE FROM BANK
WHERE (BIK_BANK = OLD.BIK_BANK);
END
^
/* Trigger: VW_BANK_BI */
CREATE TRIGGER VW_BANK_BI FOR VW_BANK
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
INSERT INTO BANK (
BIK_BANK,
NAME_BANK,
SHORT_NAME_BANK,
CLASSIF_BANK,
COMMENT_BANK)
VALUES (
NEW.BIK_BANK,
NEW.NAME_BANK,
NEW.SHORT_NAME_BANK,
NEW.CLASSIF_BANK,
NEW.COMMENT_BANK);
END
^
/* Trigger: VW_BANK_BU */
CREATE TRIGGER VW_BANK_BU FOR VW_BANK
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
UPDATE BANK
SET BIK_BANK = NEW.BIK_BANK,
NAME_BANK = NEW.NAME_BANK,
SHORT_NAME_BANK = NEW.SHORT_NAME_BANK,
CLASSIF_BANK = NEW.CLASSIF_BANK,
COMMENT_BANK = NEW.COMMENT_BANK
WHERE (BIK_BANK = OLD.BIK_BANK);
END
^
SET TERM ; ^
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c