powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / update ключевого поля int
18 сообщений из 18, страница 1 из 1
update ключевого поля int
    #37060932
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как сделать update по ключевому полю X (int) с числами чтобы начиная со строки Y все числа стали на Z больше

например в таблице есть числа:
1;2;3;4;5
чтобы получилось:
1;2;4;5;6

т.к. поле ключевое, то начиная с первой подходящей строки число 3 становится 4, а 4 уже есть - поэтому обновляются только те строки, в которых Y+Z < max(X).
Можно ли сделать update в один запрос не снимая ключа, не используя вспомогательных столбцов и т.п.?

спасибо :)
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060943
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code-byМожно ли сделать update в один запрос не снимая ключа, не используя вспомогательных столбцов и т.п.?Можно, а что не получается-то ?
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060944
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поле - ключевое, с запретом на дублирующиеся значения
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060946
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p.s. ошибочка в посте #1 - обновляются только те строки, Y+Z > max(X).
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060947
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code-byполе - ключевое, с запретом на дублирующиеся значенияИ что это меняет ? И до update и после дублирующих значений не будет, так что всё нормально.
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060973
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня дело не в том, что после update их не будет, а в том, что update не обновляет поля, поскольку
в таблице есть
1;2;3;4;5;6

если мы хотим увеличить на 1 строки начиная с 4, то
4+1=5
но 5 уже есть в таблице
поэтому update это строку не обновляет
и т.д. до 6
6+1=7
7 в таблице нет и записывается 7 вместо 6.

итого на выходе имеем:
1;2;3;4;5;7
а надо:
1;2;3;5;6;7
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060977
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code-byу меня дело не в том, что после update их не будет, а в том, что update не обновляет поляЭто что за чудо такое ? В смысле СУБД какая, в которой
Код: plaintext
UPDATE Table1 SET Field1 = Field1 +  1  WHERE Field1 >  3 
неатомарный ?
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060981
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Access

Если поле не ключевое с режимом "повторения не допускаются" - то всё работает.
...
Рейтинг: 0 / 0
update ключевого поля int
    #37060999
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code-byAccess

Если поле не ключевое с режимом "повторения не допускаются" - то всё работает.Даже в этом случае не работает, если в таблице только одно поле и оно индексировано как "повторения не допускаются", но не ключевое. Проверил на 2003. В общем, идиотизм. Посему либо обновлять построчно сзади наперёд, либо обновлять за 2 update. Т.е., как-то так
Код: plaintext
1.
2.
UPDATE Table1 SET Field1 = Field1 +  101  WHERE Field1 >  3 
UPDATE Table1 SET Field1 = Field1 -  100  WHERE Field1 >  3 
, где вместо 101 может быть любое число >= MAX(Field1) + 1.

P.S. Хотя обновление ключевого поля уже само по себе странно. Стоило бы над этим задуматься.
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061121
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня тоже пока что только такая идея (за 2 прохода).

а обновление поля надо сделать т.к. пропущена одна запись в позиции 473 примерно из 1000 записей. поскольку есть вероятность вставки строк и в будущем, хотелось бы сделать универсальный запрос, а не каждый раз писать запрос на обновление.
поле ключевое сделано только лишь для того чтобы не было случайно повторных номеров, связь с другими таблицами отсутствует.
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061138
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code-byполе ключевое сделано только лишь для того чтобы не было случайно повторных номеров, связь с другими таблицами отсутствует.Зачем делать поле ключевым, если оно не ключевое???

Наложите на него уникальный констрейн.
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061161
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,
и как сделать это в access? чтобы поставить запрет на повторение, то поле только можно сделать индексированным (ключевым).

и дело не в том, что поле ключевое или нет, а в том, что установлен запрет на повторения.

Модератор: Тема перенесена из форума "Проектирование БД".
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061450
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
code-byкак сделать update по ключевому полю X (int) с числами чтобы начиная со строки Y все числа стали на Z больше
...
а вы когда говорите "по ключевому" - имеете ввиду поле с типом счётчик ?
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061502
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
ёа вы когда говорите "по ключевому" - имеете ввиду поле с типом счётчик ?
в вообщем, если я ошибаюсь,
то так можна
Код: plaintext
1.
2.
3.
update 
(select id from T order by id desc) a  
set a.id = a.id+ 1 
where id> 3 
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061522
ё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ё
Гость
code-byа обновление поля надо сделать т.к. пропущена одна запись в позиции 473 примерно из 1000 записей...
"ну фуу" (с)

ну не в этом смысл ключа в таблице ... (( !!

зы
незаметил как-то сразу этот перл...
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061622
code-by
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ё,

спасибо! я так и думал, что тут нужен какой-нибудь вложенный запрос.
...
Рейтинг: 0 / 0
update ключевого поля int
    #37061712
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
code-by,

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

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


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