powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите написать процедуру
15 сообщений из 15, страница 1 из 1
помогите написать процедуру
    #32157664
moore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...которая бы делала insert в таблицу, а если уже есть там запись с таким id, то делала бы update этой записи

всем спасибо заранее...
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32157683
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
create procedure БЛА-БЛА-БЛА (new_id IN integer, ...)
numrows INTEGER;
BEGIN
SELECT COUNT (*)
INTO numrows
FROM ТАБЛИЦА
WHERE id = new_id;

IF (numrows <> 0)
THEN update ...
ELSE insert ...
END IF;
end БЛА-БЛА-БЛА;
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32157703
moore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, седня попробую...
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158030
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через exists побыстрее будет.

Для MS SQL

Код: plaintext
1.
2.
3.
4.
5.
6.
create procedure БЛА-БЛА-БЛА new_id INT, ...
AS

if exists (select * FROM ТАБЛИЦА WHERE id = new_id) 
update ... 
ELSE 
insert ... 
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158111
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
По скорости - без разницы.
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158116
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так
Код: plaintext
1.
2.
3.
update ....

if @@ROWCOUNT =  0 
 insert ...
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158120
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Я, честно говоря, вообще не понимаю - зачем это надо.
Не представляю ситуацию, когда я не знал бы что делаю - добавляю новую запись или редактирую существующую.
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158123
Voha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почемубы не использовать генераторы?
В предложенных вариантах, в случае работы с базой по сети могут возникнуть проблемы, когда два пользователя будут добавлять записи с малым интервалом времени, то могут получить один и тотже ИД, тк. транзакция одного не закончится и поэтому не будет видно другим пользователям внесенные изменения.
По моему мнению для получения уникального ИД лучше использовать ГЕНЕРАТОР.
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158180
moore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Я, честно говоря, вообще не понимаю - зачем это надо.
>Не представляю ситуацию, когда я не знал бы что делаю - добавляю новую запись или редактирую существующую.


попробую объяснить...
данные в одной таблице апдейтятся в зависимости от происходящих изменений в другой таблице...
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158190
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Да, действительно - я как то не подумал об этом. Хотя и сам так делал.
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158192
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>данные в одной таблице апдейтятся в зависимости от происходящих изменений в другой таблице...

Так может лучше не процедура а триггер?
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158195
moore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм... а я не подумал об этом...
может даже триггер лучше.
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158231
paul_c0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да триггер дело хорошее но тормазноеееее.
Видел я базу где большинство операций живут на триггерах. Результат
обрабатываем 5000 записей(уменьшаем доход человека на n сумму) и это происходит на 2GHZ сервере в течение 10 минут.
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158239
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
paul_c0, а индексы отключать на время таких изменений не судьба?
...
Рейтинг: 0 / 0
помогите написать процедуру
    #32158247
paul_c0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а индексов там вообще не было (да наверное и небудет. Я непривык совать нос не в свое дело). А подавыть советы, дак на это можно ответить тем самым анекдотом (про площадь и почему там нельзя е..я).
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите написать процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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