powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
18 сообщений из 18, страница 1 из 1
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827452
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, подскажите пожалуйста.
Тема : Представления
Задание :
Создать представления для выборки данных:
Выбрать все не доставленные заказы. Отобразить номер заказа, дату заказа, статус заказа, отметку об оплате, тип продукции. Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов и запрещающий менять другие данные в таблице – источнике.

Первую часть я сделал:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE OR ALTER VIEW ZADANIE(
    NUMBER,
    DATES,
    STATUS,
    PAID,
    TYPES)
AS
select
   sal.PO_NUMBER,
   sal.ORDER_DATE,
   sal.ORDER_STATUS,
   sal.PAID,
   sal.ITEM_TYPE
from sales sal
where sal.ORDER_STATUS != 'Achieved'
;


Выборка из представлений:
Код: sql
1.
2.
3.
SELECT
    NUMBER || ' ' || DATES || ' ' || STATUS || ' ' || PAID || ' ' || TYPES as "Информация"
FROM ZADANIE


Подскажите как сделать триггер.
как я понимаю триггер должен быть до обновления. как сделать что бы поле было модифицируемое не понимаю.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827453
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213как сделать что бы поле было модифицируемое не понимаю.
Для этого в триггере надо либо изменять таблицу-источник либо выбрасывать исключение.
Первое делается оператором UPDATE, второе - EXCEPTION.

RTFM
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827457
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо прочитал. А есть пример триггера для представления ?
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827465
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213Спасибо прочитал.
Все 300 страниц меньше чем за полчаса? Да ты монстр...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827470
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Нууу не 300 а только что касательно триггера и представления.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827471
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213,

вся разница лишь в том что для представлений триггер должен делать операции над базовыми таблицами.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827472
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Вот я сделал:
Код: sql
1.
2.
3.
4.
5.
6.
7.
AS
begin
  /* Trigger text */
UPDATE sales sal
SET sal.item_type = new.types
where sal.item_type != new.types;
end


Но выдаёт ошибку если я в выборке подтверждаю изменения.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827478
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213,

за такие триггеры убивать надо. У тебя в триггере в условии отбора для UPDATE надо привязку к первичному ключу делать или так чтобы конкретная строка в представлении фильтровала только одну строку в базовой таблице. Запрет (отмена) делается вызовом исключения в триггере.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827489
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213where sal.item_type != new.types;
спасибо, как говорится, поржал (на тему !=).
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827493
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

Спасибо. Но я вот и не пойму. Мы в триггере указываем

UPDATE имя таблицы
SET какую ячейку нужно поменять = на что меняем
where а проверку не могу написать. пробую сравнивать № заказа в таблице и № заказа в представлении. Он ругается что мол поля такого нет. Я не соображу как же написать если в триггере нельзя указать поля представления.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827503
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213Но я вот и не пойму.
вам не нужен триггер на view. нужен триггер на таблицу.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827504
JleHuH213
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Друг ты мне сейчас всю жизнь сломал. Я тут часа 3 сижу.. а ты говоришь я не там делаю.. =(
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827506
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213,

конечно не там. во-первых, view это тупо хранимый запрос. запрос можно выполнить точно так же как view. Во-вторых, нахрена лепить триггер на view, если нужен триггер именно на таблицу.
У вас там "тема" и "задание", а значит, никаких замудреных задач типа "view и на него триггеры" по идее быть не может. Я сильно сомневаюсь что ваш препод по знанию SQL Firebird круче чем местные форумные долгожители.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827507
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JleHuH213,

кроме того, тут
авторРеализовать триггер, позволяющий менять тип продукции для неоплаченных заказов и запрещающий менять другие данные в таблице – источнике.
я не вижу слова view, "просмотр", или еще какой-нибудь аналогичной хрени. такие вещи делаются явным триггером на таблицы, а не на view.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827510
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то все набросились на бедного студента. :) Он вон какой скорочитатель. :)

kdv"view и на него триггеры" по идее быть не может.На самом деле, если кроме вью никто не может менять данные в таблице (что вполне достижимо раздачей соотв. грантов), то триггер на вью, который меняет только подпадающие по разрешение данные волне себе разом решает обе задачи в стартовом посте. Эксепшн как таковой не обязателен, триггер на вью как раз может молча проглотить (опционально залогировать) попытку удаления и без явного эксепшена.

JleHuH213Я тут часа 3 сижу..И это только начало, милок. То ли еще будет. ;)

kdvЯ сильно сомневаюсь что ваш препод по знанию SQL Firebird круче чем местные форумные долгожители.Дим, сними треуголку, она тебе мосх упарила.
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827584
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky(что вполне достижимо раздачей соотв. грантов)
ну ты считаешь, что препод настолько безумен, что дал студентам именно задачу сделать все через view и через триггеры на view?

Ivan_PisarevskyДим, сними треуголку, она тебе мосх упарила.
мне? Да я в SQL лох. к примеру, в CTE я вообще не рублю. А вот Таблоид и wildsery (если правильно написал) - вот они реально монстры SQL.
И по сравнению с ними я бы и тебе треуголку предложил снять :-)
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827590
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvну ты считаешь, что препод настолько безумен, что дал студентам именно задачу
сделать все через view и через триггеры на view?
Ну, лично я так и считаю, да.

Хотя возможно, что слово "Представления" осталось в задании с акцессовских времён, где оно
имеет несколько другое значение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
    #38827855
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvну ты считаешь, что препод настолько безуменЯ с ним не знаком, судить о его здоровье не берусь. :)
kdvсделать все через view и через триггеры на view?Насколько это нужно именно студенту, вопрос интересный. Но насколько нам интересно обсуждать просто очередной курсовик? То что задача решаема вполне себе штатно через через view и навешанные на вьюху триггера мне, например, очевидно. Поэтому и был пассаж про треуголку. :)

Dimitry SibiryakovХотя возможно, что слово "Представления" осталось в задании с акцессовских времён, где оно
имеет несколько другое значение.И это тоже.

kdvИ по сравнению с ними я бы и тебе треуголку предложил снять :-)Не вопрос. Мои запросы для продакшена вполне тривиальные. Я вообще сложного кода пугаюсь.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Реализовать триггер, позволяющий менять тип продукции для неоплаченных заказов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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