powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / база данных в informix(операторы update, delete и триггер)
10 сообщений из 10, страница 1 из 1
база данных в informix(операторы update, delete и триггер)
    #36987452
PavelSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые форумчане!...

Очень прошу помочь с базой данных в информиксе, а конкретно - написать пару операторов и триггер.
(база выполняется в gentoo linux)
Условие:
"Разработайте БД, которая решает задачу автоматизированого обслуживания депозитных операций банка.
С помощью языка DDL спроэктируйте схему базы данных, достаточной для решения следующих задач языками DML и SPL:
1. Наполнение БД данными про юридические особы, которые размещают деньги на депозитных счетах банка.
2. Получите информацию про отделения банка, в котором проведена операция по открытию найбольшего депозитного счета в банке.
3. Объедените информацию, что касается открытия депозитных счетов с двух выбранных отделений банка и закрепите данную информацию за указанным третьим отделением.
4. Уничтожте информацию про клиентов, которые не пользовались услугами открытия депозитных счетов банка на протяжении последних пяти лет и имеют лишь закрытые депозитные счета, что открывались только в одном отделении банка.
5. Сделайте тригер, который проводит контроль невозможности открытия депозитных счетов клиентов в каждом отдельном отделении банка, кроме главного, за один день, на общую сумму, что не привышает 500000 д.о."

Первые два пункта я сделал, но не получается 3,4 пункты и 5(с триггером).
Значит вот структура моей базы данных:
1таблица:"OSOBA" столбцы: *ID, NAME
2таблица:"RAHUNOK" столбцы: *ID,*OSOBA_ID, *OTDEL_ID, SUMA, TERM(срок), ZAKRYT(логическое - типа закрыт счет или открыт)
3таблица:"OTDEL" столбцы: *ID, NOMER_OTDELA, GLAVNY(тоже логическое - типа главный отдел или нет)

Далее представляю первый пункт - сама база:
CREATE TABLE OSOBA (
ID SERIAL NOT NULL PRIMARY KEY,
NAME VARCHAR(30) NOT NULL,
);

CREATE TABLE RAHUNOK (
ID SERIAL NOT NULL,
OSOBA_ID INTEGER NOT NULL,
OTDEL_ID INTEGER NOT NULL,
SUMA MONEY NOT NULL,
TERM DATE NOT NULL,
ZAKR INTEGER DEFAULT 1 NOT NULL CHECK (ZAKR IN(0,1)),
PRIMARY KEY (ID, OSOBA_ID, OTDEL_ID)
);


CREATE TABLE OTDEL (
ID SERIAL NOT NULL PRIMARY KEY,
NOMER_OTDELA INTEGER NOT NULL,
GLAVN INTEGER default 1 NOT NULL CHECK (GLAVN IN(0,1))
);


далее заполнение таблиц:
INSERT INTO OSOBA VALUES (0,"P1")
INSERT INTO OSOBA VALUES (0,"P2")
INSERT INTO OSOBA VALUES (0,"P3")
INSERT INTO OSOBA VALUES (0,"P4")
INSERT INTO OSOBA VALUES (0,"P5")
INSERT INTO OSOBA VALUES (0,"P6")
INSERT INTO OSOBA VALUES (0,"P7")
INSERT INTO OSOBA VALUES (0,"P8")
INSERT INTO OSOBA VALUES (0,"P9")
INSERT INTO OSOBA VALUES (0,"P10")

INSERT INTO RAHUNOK VALUES (0,1, 1, 200, "01.10.04", 1)
INSERT INTO RAHUNOK VALUES (0,2, 2, 1000, "01.10.05", 0)
INSERT INTO RAHUNOK VALUES (0,3, 3, 50000, "01.10.07", 1)
INSERT INTO RAHUNOK VALUES (0,4, 4, 3000, "01.10.03", 0)
INSERT INTO RAHUNOK VALUES (0,5, 5, 10000, "01.10.06", 1)
INSERT INTO RAHUNOK VALUES (0,6, 3, 2500, "01.10.08", 0)
INSERT INTO RAHUNOK VALUES (0,7, 1, 3600, "01.10.10", 0)
INSERT INTO RAHUNOK VALUES (0,8, 4, 12000, "01.10.06", 1)
INSERT INTO RAHUNOK VALUES (0,9, 5, 88000, "01.10.02", 0)
INSERT INTO RAHUNOK VALUES (0,10, 1, 70000, "01.10.03", 0)

INSERT INTO OTDEL VALUES (0,1, 1)
INSERT INTO OTDEL VALUES (0,2, 0)
INSERT INTO OTDEL VALUES (0,3, 0)
INSERT INTO OTDEL VALUES (0,4, 0)
INSERT INTO OTDEL VALUES (0,5, 0)

Далее привожу запрос по второму пункту:
SELECT OTDEL.NOMER_OTDELA
FROM OTDEL, RAHUNOK
WHERE OTDEL.ID=RAHUNOK.OTDEL_ID
GROUP BY OTDEL.NOMER_OTDELA
HAVING MAX(RAHUNOK.SUMA)>1

Пожалуйста, помогите с написанием 3 пункта - там нужен оператор update, что б типа информация с одного отдела заменялась на информацию по другому, совершенно не представляю как это реализовать.

С 4 пунктом - надо сделать либо вложеный запрос с оператором DELETE либо временную таблицу, либо что-то еще, вообщем помогите.

В 5 пункте надо сделать триггер, в котором я вообще практически "0".
Очень надеюсь на вашу помощь, мне надо скоро это сдавать, на вас вся надежда. Если что, спрашивайте.
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36987479
Фотография sysmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели Informix стали преподавать в ВУЗах!?!?!
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36987494
PavelSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да(((((
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36987500
Фотография sysmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в каком?
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36987504
PavelSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в экономическом))))
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36987506
PavelSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КНЕУ(Киев)
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36990045
PavelSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, хотя б с триггером помогите.......
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36990173
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelSSSЗдравствуйте уважаемые форумчане!...

Очень прошу помочь с базой данных в информиксе, а конкретно - написать пару операторов и триггер.
(база выполняется в gentoo linux)
Условие:
"Разработайте БД, которая решает задачу автоматизированого обслуживания депозитных операций банка.
С помощью языка DDL спроэктируйте схему базы данных, достаточной для решения следующих задач языками DML и SPL:
1. Наполнение БД данными про юридические особы, которые размещают деньги на депозитных счетах банка.
2. Получите информацию про отделения банка, в котором проведена операция по открытию найбольшего депозитного счета в банке.


Далее привожу запрос по второму пункту:
SELECT OTDEL.NOMER_OTDELA
FROM OTDEL, RAHUNOK
WHERE OTDEL.ID=RAHUNOK.OTDEL_ID
GROUP BY OTDEL.NOMER_OTDELA
HAVING MAX(RAHUNOK.SUMA)>1


Неправильно.
select OTDEL.NOMER_OTDELA
FROM OTDEL, RAHUNOK
WHERE OTDEL.ID=RAHUNOK.OTDEL_ID
AND RAHUNOK.SUMA IN (select max(SUMA ) from rahunok)
(select otdel_id from
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36990187
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavelSSSНарод, хотя б с триггером помогите.......

create trigger tr_RAHUNOK insert on RAHUNOK
referencing new as new_tab
for each row
(
execute procedure check_rahunok (new_tab.OSOBA_ID, new_tab.OTDEL_ID,
new_tab.SUMA, new_tab.TERM)
);

create procedure check_rahunok (p_OSOBA_ID int, p_OTDEL_ID int, p_suma money, p_term date);

define l_glavn INT;

LET l_glavn = SELECT glavn from otdel where id = p_otdel_id;

if ( (l_glavn = 0)
and ((p_suma +
(select sum(suma) from rahunok where osoba_id = p_osoba_id and term = p_term)) > 500000 )) THEN

raise exception-746,0,"Duzhe bagato groshiv ! ";
end if

end procedure;
...
Рейтинг: 0 / 0
база данных в informix(операторы update, delete и триггер)
    #36990831
svat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбегалло,

:)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / база данных в informix(операторы update, delete и триггер)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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