powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Update связанных таблиц
9 сообщений из 9, страница 1 из 1
Update связанных таблиц
    #33232737
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот вопрос возник:
Есть таблица t1(
t1_id long, - (PK)
t1_data[неважно])
и таблица t2(
t2_id long, (PK)
t1_id long, (FK к первой таблице)
t2_data[неважно])

В обоих таблицах есть данные, любой строке из первой таблицы соответствует 1 или больше строк из второй.
Задача: сместить диапазон t1_id - т.е. если сейчас начинается от 1 и id идут вверх, то теперь надо сделать так, чтобы все строки получили t1_id = t1_idстарый + 1000.

Пример:
было
t1:
1, qweqw
2, erwrrew
3, fgdfgd

t2:
1, 2, kjlkjl
2, 2, nbmnb
3, 3, lklk
4, 1, jjjjjj

Должно стать:
t1:
1001, qweqw
1002, erwrrew
1003, fgdfgd

t2:
1, 1002, kjlkjl
2, 1002, nbmnb
3, 1003, lklk
4, 1001, jjjjjj

А вот теперь если я сначала пытаюсь изменить и проапдейтить строки первой таблицы - то мне сервак не дает этого сделать, т.к. нарушится целостность. Если я сначала пытаюсь проапдейтить строки 2й таблицы - опять тоже, по той же причине.
В пределах одной транзакции сделать не получается, ругаться начинает прямо после певрого апдейта, еще не успев дойти до второго.

Я в итоге сделал так: ввел временные строки, перевел на них вторую таблицу, затем проапдейтил первую (id+1000), а потом уже с временных строк вернул на проапдейченные.

А как можно было сделать красивее\правильнее?

PowerBuilder8 +ASA7

Правда у меня тут сомнения закрались, может это вообще типовая штука, а я просто туплю?
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33232744
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Yorik__ wrote:

> Правда у меня тут сомнения закрались, может это вообще типовая штука, а
> я просто туплю?

По-моему, таки тупишь . См. ON UPDATE CASCADE.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33232757
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.... фак, мля.. :)
А если не править REFERENCE?
А то у меня в базе этого нет, а специально вводить, а потом убирать - не хочется.
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33232761
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
alter table t2
add foreign key t2_fk(t1_id)
references t1(t1_id)
on update cascade
on delete cascade;
и все

а потом drop...
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33232767
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Yorik__ wrote:

> А если не править REFERENCE?
> А то у меня в базе этого нет, а специально вводить, а потом убирать - не
> хочется.

Отсюда помедленнее, пожалуйста ;). Насколько я понял, у тебя с T2 на T1
ссылается Foreign key, объявленный ON UPDATE RESTRICT, который и не даёт
апдейтить t1_id. Я всего лишь предложил переделать этот FK в ON UPDATE
CASCADE (переткнуть 1 радиобатон в Централе).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33232784
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасиб, а еще способы?
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33232830
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Yorik__ wrote:

> Спасиб, а еще способы?

А надо ;)?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33233704
__Yorik__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...спортивный интерес :))
...
Рейтинг: 0 / 0
Update связанных таблиц
    #33234059
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то , изменять значение первичного ключа таблицы - это "дурной тон" в реляционных базах данных. Если это поле нужно менять, сделайте первичным ключём другое поле, и меняйте это на здоровье.
Что же до административных разовых действий - дропните констрейнт, поменяйте данные, создайте констрейнт заново.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Update связанных таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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