Главная страница
    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.03 c
1-1095596877
RoLeX2004
2004-09-19 16:27
2004.10.03
Прога неправильно понимает маску "~*.*" при поиске.


4-1093524522
OSokin
2004-08-26 16:48
2004.10.03
Как добавить к пункту меню процедуру клика


14-1095408397
wicked
2004-09-17 12:06
2004.10.03
Знатокам C++


3-1094467330
rosl
2004-09-06 14:42
2004.10.03
два dbgrid


14-1095092172
}|{yk
2004-09-13 20:16
2004.10.03
Сабо обозвал Интернет "сборищем бомжей с Бессарабки"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский