База данных

Все о программировании под *nix
Аватара пользователя
kas
Маньяк
Сообщения: 184
Зарегистрирован: 10 июл 2002, 03:15
Откуда: Минск

База данных

Сообщение kas »

Есть две таблицы: заказы и работы. Связаны один ко многим т.е. у заказа список работ. Нужно гарантировать средствами БД, что у каждого заказа будет хотя бы одна работа.

В IRC hell предложил повесить триггер на DELETE и UPDATE, а также сделать хранимую процедуру для вставки. Вот только я не совсем предстваляю, как эта хранимая процедура должна выглядеть.

Насколько я понял, параметрами к хранимой процедуре должны быть все поля таблицы заказов, а также таблица со значениями для таблицы работ. Как передать таблицу в функцию? Или я чего-то не так понял?

P.S СУБД -- PostgreSQL
- Говорят, пингвин - это ласточка разжиревшая от лени?
- Нет. Это ласточка беременная мыслью.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

kas, хоть бы ты примеры посмотрел. Хранимая процедура принимает в качестве параметров данные, а не таблицы.
См например как сделано тут:
http://www.tek-tips.com/gfaqs.cfm/lev2/ ... 9/fid/3411
http://forums.devshed.com/t114218/s.html
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
kas
Маньяк
Сообщения: 184
Зарегистрирован: 10 июл 2002, 03:15
Откуда: Минск

Сообщение kas »

А если мне, как в данном случае, нужно передать данные неопределённого резмера -- набор строк для таблицы работ?
- Говорят, пингвин - это ласточка разжиревшая от лени?
- Нет. Это ласточка беременная мыслью.

Аватара пользователя
Eugene
Маньяк
Сообщения: 162
Зарегистрирован: 13 фев 2004, 15:02
Откуда: Minsk
Контактная информация:

Сообщение Eugene »

В таких случаях используют курсор. Лично я с Postgre не сталкивался настолько близко, но почему-то уверен что поддержка курсоров там быть обязана :wink:
/born to bash/

[ updated: 2006-02-21 ]

/born to zsh/

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

М.б. тут найдешь.
http://forums.devshed.com/t47247/s.html
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
Andrej Ramaszeuski
Неотъемлемая часть форума
Сообщения: 507
Зарегистрирован: 28 ноя 2003, 11:42
Откуда: Pardubice, CZ
Контактная информация:

Сообщение Andrej Ramaszeuski »

Eugene писал(а):В таких случаях используют курсор. Лично я с Postgre не сталкивался настолько близко, но почему-то уверен что поддержка курсоров там быть обязана :wink:
Представь себе, есть :)
Linux is like a wigwam: no Windows, no Gates and Apache inside.

Аватара пользователя
kas
Маньяк
Сообщения: 184
Зарегистрирован: 10 июл 2002, 03:15
Откуда: Минск

Сообщение kas »

Меня что-то смущает отсутсвие стандартного решения для реализации отношения один к одному или более.
Странно это...:roll:
- Говорят, пингвин - это ласточка разжиревшая от лени?
- Нет. Это ласточка беременная мыслью.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

kas, это не баг, эта фича. Такие вот стандартные отношения есть в иерархических БД... ИМХО в большинстве случаев SQL гораздо удобнее. Утверждаю это как человек портировавший приложение с иерархической базы на реляционную.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
Andrej Ramaszeuski
Неотъемлемая часть форума
Сообщения: 507
Зарегистрирован: 28 ноя 2003, 11:42
Откуда: Pardubice, CZ
Контактная информация:

Сообщение Andrej Ramaszeuski »

kas писал(а):Меня что-то смущает отсутсвие стандартного решения для реализации отношения один к одному или более.
Странно это...:roll:
foreign key не катит?
Linux is like a wigwam: no Windows, no Gates and Apache inside.

Ответить