powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Добавление данных в таблицу.
5 сообщений из 5, страница 1 из 1
Добавление данных в таблицу.
    #33115680
вобщем, есть таблица с информацией о телефонных номерах:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE phonestat (
    phone_id serial NOT NULL,
    numb character varying( 6 ) NOT NULL,
    begin_action date DEFAULT ('now'::text)::date NOT NULL,
    end_action date, -- DEFAULT NULL
    subscr_id integer DEFAULT  0  NOT NULL,
    subscr_type_id integer DEFAULT  6  NOT NULL,
    ........
    inuse boolean DEFAULT true NOT NULL
);
numb - номер телефона,
owner - владелец номера,
begin_action .. end_action - период, в котором данный номер принадлежал данному владельцу.
если begin_action установлен, а end_action - NULL, номер принадлежит владельцу в настоящее время.
Собственно проблема:
как с помощью триггера (или другим способом) сделать так, чтобы при добавлении новой информации о номере, либо изменении информации о номере:
1. если такой номер есть и он принадлежит кому-то в настоящее время (end_action=NULL) - изменить end_action на (сегодня - 1 день) и вставить новую запись с end_action=NULL;
2. Если информации о номере нет, то вставить его (даже если происходит UPDATE)
Заранее спасибо.
...
Рейтинг: 0 / 0
Добавление данных в таблицу.
    #33115710
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы рекомендовал данную логику реализовать вместо триггера в хранимой процедуре и производить обновление информации через нее. В триггере при желании лучше реализовать проверку, что вставляемый или изменяемый номер не пытается сослаться на телефон, который зарезервирован за другим пользователем. Это позволит облегчить написание, восприятие и сопровождение кода, снимет вопросы о рекурсивных вызовах триггеров и решит вопросы производительности, когда в данную таблицу понадобится к примеру залить массив подготовленных записей из внешнего источника. Во всяком случае из личного опыта могу сказать, что вариант с ХП оказывается менее проблематичен, чем с реализацией данной логики через триггера, хотя никто не спорит, что если РСУБД поддерживает BEFORE триггера, это там спокойно реализуется.
...
Рейтинг: 0 / 0
Добавление данных в таблицу.
    #33115719
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользуйся ХП.

--
Dik76

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Добавление данных в таблицу.
    #33115723
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опоздал :)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Добавление данных в таблицу.
    #33123833
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вчём проблемато! незнаю какой языком ползуешся например в делфи в обработчике BEFOREPOST пишеш!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Query1.SQL.Close;
 Query1.SQL.Text:='select * from phonestat where numb='номер который добавляется' '; //выбераем номер который щяс будет добавляться
Query1.SQL.Open;
 if Query1.FieldByName('numb').AsString<>'' then //номер если есть
  begin
   Query1.SQL.Text:='update phonestat set end_action=null where numb='номер который добавляется' ';
   Query1.ExecSQL;
    Query1.SQL.Close;
     Query1.SQL.Text:='select * from phonestat where numb='номер который  добавляется' ';
    Query1.SQL.Open;
  end;
   Query1.SQL.Text:='insert into phonestat(..., numb) values(..., 'номер который добавляется')';// добавляем запис не смотря номер есть или нет
   Query1.ExecSQL;
 Query1.SQL.Close;
  Query1.SQL.Text:='select * from phonestat ';
 Query1.SQL.Open;

правда много запросов идёт на сервер но работать будет!
и ешё я предвидел что номер телефона должын быть уникалным... у нас например уникалный

______________________________________
Я Знаю толко то что я ничего незнаю! [СОКРАТ]
www.hramin.tk
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Добавление данных в таблицу.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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