Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть две таблицы: 1. id a1,a2,a3,a4,f 2. id b1,b2,b3,f они связаны по id- идентификатор первой таблицы. f- поле типа int для определения актуальности записи При каких либо изменениях запись инсертом копируется в таблицу с новым id и изменениями, а старая запись отправляется в архив с f=0 Возникла необходимость поменять значения в нескольких записях(здесь проблем нет), а вот как "отправить архив" из записи. Как думал я: 1. копировать записи с первой таблицы в неё же по условию с f=2. Тут создаются новые id идентификатором-сделал 2. делать в них изменения-сделал а тут подзавис, помогите чем можЫте) 3. затем копировать связанные записи из таблицы 2 в неё же с новым ID из таблицы 1 4. "отправить в архив" записи в обеих таблицах(f=0) и в созданных поменять f=1 USE base DECLARE @STR NVARCHAR(MAX) SET @STR ='111' --СОЗДАЮ НОВЫЕ ЗАПИСИ В ТАБЛИЦЕ 1 /*INSERT INTO Table1 (a1,a2,a2,a3,a4,f) SELECT a1,a2,a2,a3,a4,'2' FROM Book WHERE a1 LIKE '%'+@STR+'%'*/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 09:32 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
linker_2004, немного офф, видел много реализация SCD, но Ваша не самая удачная. Отслеживание версионности не должно влиять на первичный ключ и связи между таблицами. Если хочется пилить свое, то посмотрите несколько паттернов здесь или воспользуйтесь более новым , может это больше понравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 12:20 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
linker_2004, архив - в отдельную таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 13:37 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
iiyamalinker_2004, немного офф, видел много реализация SCD, но Ваша не самая удачная. Отслеживание версионности не должно влиять на первичный ключ и связи между таблицами. Если хочется пилить свое, то посмотрите несколько паттернов здесь или воспользуйтесь более новым , может это больше понравится Спасибо. Почитаю. Забыл написать что в каждой таблице есть поля с датой начала и конца актуальности типа datetime ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 15:11 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
linker_2004, Недопонял, зачем новый id генерится. Вроде бы f - это как-бы номер версии записи, так? Сделайте первичный ключ (id, f) и еще доп-поле isLastVersion, которое м.б 1 или 0 Это наверняка есть в тех ссылках от iiyama ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 19:28 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
linker_2004 в каждой таблице есть поля с датой начала и конца актуальности типа datetime Если конец IS NULL вот вам и отличный признак последней версии. А все остальное - "орхив" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 19:31 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
Glebanskilinker_2004, Недопонял, зачем новый id генерится. Вроде бы f - это как-бы номер версии записи, так? Сделайте первичный ключ (id, f) и еще доп-поле isLastVersion, которое м.б 1 или 0 Это наверняка есть в тех ссылках от iiyama f изначально и был только 0 и 1... немного коряво наверно и не так быстро, но зато работает.. кодить начал месяц назад.. За конструктивную критику отдельное спасибо. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 20:24 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
хотел без циклов с циклами наверное не комильфо) но такого рода замены будут не частыми, так что думаю пойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2018, 20:26 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
linker_2004, У меня вопрос, это для учебных целей или производственная задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 10:41 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
iiyama,производственная. Учусь на ходу подсказывать не по содержанию базы кроме интернета толком некому. Пишу программу под существующую базу поля или таблицы добавить могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 14:06 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
но как и везде есть голос свыше и ему виднее как должно быть) и не волнуют сущности и прочая "ерунда") но компромиссы бывают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 14:08 |
|
||
|
Нужна помощь копирование записей в две связанных таблицы из них же
|
|||
|---|---|---|---|
|
#18+
linker_2004, В реальной жизни так делать нельзя, хотя бы потому что одновременно могут работать несколько человек. Не надо придумывать свои грабли, для этих целей уже реализованы не то что грабли, а комбайны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 14:23 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1689316]: |
0ms |
get settings: |
6ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 370ms |

| 0 / 0 |
