|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.03.2012, 22:18 | #1 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Firebird несколько вопросов
Здравствуйте!
Возникло несколько несложных для профессионалов вопросов, подскажите... 1. Как написать ХП ничего не выводящую (без "do suspend"), то есть просто обработчик нескольких таблиц по SQL скрипту? (IBExpert ругается, не даёт сохранить в БД скрипт.) Вызов должен происходить из программы, без всяких таймеров. 2. В программе после множества действий получается некая таблица данных, обновлённые данные из которой нужно записать в БД. Сделать это всё внутри одного Dataset невозможно. Как наиболее правильно сравнивать "данные старые - данные новые" на предмет изменений с последующим сохранением изменений в БД? (Возможно не только update, но и insert и delete!) Варианты: а) создать в программе два Dataset и вручную сравнивать, затем в БД отправлять в 3 этапа Изменённые,Удалённые,Добавленные? б) использовать один Dataset и отправлять в БД все данные, а перед постом проверять триггером/ХП? Как вообще такое делается обычно? 3. View в БД обновляются внутри БД постоянно сами (например при изменении данных в связанных таблицах) или только когда обращаются непосредственно к View? 4. Как хранить мультимедиа данные нужные всем пользователям БД при условии, что прямого доступа к серверу с БД ни у кого нет? Например фото и видео файлы? Записывать прямо в БД криво и тупо, если класть рядом - то непонятно как это делать если нет прямого доступа к папкам сервера? Кто как решает подобные вопросы? |
08.03.2012, 22:45 | #2 | ||||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Впрочем если речь идет о временной таблице, из которой потом данные попадают в другие таблицы то помогает Код:
Цитата:
Цитата:
\\sever\photo\cfphn089[0jm98dx8098d\file.jpg Папка photo расшарена но закрыта по безопасности. Папка cfphn089[0jm98dx8098d открыта по безопасности. Таким образом твоя прога по полному пути пройти сможет, а вот юзверь через проводник нет. Или вернее сможет, но ты ведь ему имя каталога cfphn089[0jm98dx8098d не расскажешь Или второй вариант: По запросу файл копируется на локальный диск в скажем TEMP папку винды.
I'm learning to live...
|
||||
08.03.2012, 22:45 | #3 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
1. "do suspend" не существует. В том смысле, что "do" никакого отношения к "suspend" не имеет. Детали в справке по SQL. Чтобы написать ХП, "ничего не выводящую", нужно написать ХП ничего не выводящую (без слова "suspend").
2. Каждый разработчик делает это по своему. Универсального метода не существует. 3. Сервер СУБД - это самая обычная прога (dll, к примеру, для винды). Разумеется сама по себе она ничего не делает. Представление не обновляется - это не таблица, а формируется когда это требуется, т.е. при запросе к представлению. 4. Если доступа к серверу с БД нет, а "записывать прямо в БД криво и тупо", то это называется тупик. |
09.03.2012, 12:47 | #4 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Stilet
1-2-3. странная манера не отвечать на заданные вопросы, а писать комменты в стиле "а это ваще ненужное всё". Если спрашивают - значит нужно. 4. Вот это нормальный ответ, спасибо! Уточнение - как на Delphi правильно пишется код типа "отдать файл / отправить файл юзеру в папку TEMP"? Прик 1,3 - понятно, спасибо. |
09.03.2012, 13:06 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
09.03.2012, 13:13 | #6 | |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Цитата:
|
|
09.03.2012, 13:21 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Чукча все видит. В том числе и спасибо в стиле - здесь ты негодяй, а за это, так уж и быть - спасибо.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.03.2012, 13:43 | #8 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
Насчет остального думай что хочешь - при проектировании не об этом задумываться надо. Это далеко не самое важное.
I'm learning to live...
|
||
10.03.2012, 19:06 | #9 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Вопрос №2 остался без ответа...
|
10.03.2012, 21:15 | #10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ты внимательно прочел про то что я о транзакциях писал? Ась?? Похоже что нет. Повторюсь - ты выполняешь запросы в рамках одной транзакции. Эти все данные попадают в грязный кэш СУБД, которая хранит их таблица аки, и ждет твоей комманды COMMIT, дабы записать это все одним чёхом в базу. Отсюда я задал вопрос: Зачем тебе нужна временная таблица? Ты прав - синхронизировать таблицы занятие трудоемкое, и если много клиентов сразу почнут это дело на сервере СУБД может загнуться от такого напряга. Опять таки вопрос: Что это за данные такие, что требуют искусственного временного хранилища? Ты уверен что ну никак без времянки нельзя?
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Несколько вопросов | DeFix | Работа с сетью в Delphi | 3 | 28.11.2011 13:48 |
Несколько вопросов | phphel | Общие вопросы Delphi | 19 | 30.01.2011 21:24 |
несколько вопросов по C | Horus92 | Общие вопросы C/C++ | 2 | 15.11.2009 16:08 |
несколько вопросов | fitc | Общие вопросы Delphi | 28 | 14.07.2009 21:20 |
Несколько вопросов | Зубоскалик | Общие вопросы Delphi | 14 | 20.11.2008 14:28 |