Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.046 c
8-1089102438
Urvin
2004-07-06 12:27
2004.10.03
КАК уменьшить количество цветов в картинке


14-1095226182
КаПиБаРа
2004-09-15 09:29
2004.10.03
Как создаются большие проекты?


14-1094732606
Sancho
2004-09-09 16:23
2004.10.03
memproof.hlp


6-1090778581
Alexandr Psih
2004-07-25 22:03
2004.10.03
Как получить имена компьютеров в сети?


14-1095126478
Думкин
2004-09-14 05:47
2004.10.03
С днем рождения! 14 сентября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский