|
|
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы, одинаковые (одна рабочая, другая архивная). Нужно в архивной табл. хранить данные из рабочей. Допустим, в рабочей таблице добавялись какие-то данные, или удалялись, при работе с архивом за текущий период необходимо внести все изменения, которые делались в рабочей таблице. Как лучше это сделать? Удалять старые данные в архивной и вставлять все из рабочей или путем сравнения поля ID, добавлять и обновлять архивную таблицу??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 13:41:25 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
У меня была такая же проблемка, я добавил дополнительное поле, если запись добавлена в архив, то ставится значение 1, если эта запись была модифицирована, то 0. А раз в сутки простым запросом данные в архиве обновляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 13:46:52 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
timestamp? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 13:52:23 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Ну в принципе можно и через timestamp, но мне показалось это не очень удобно, так как timestamp меняется произвольно, а так либо 0 либо 1 - все ясно и понятно -)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 13:59:19 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
На мой, далекий правда от професионального, вгляд, преимущества Timestamp, в отличие нуля и единицы, примерно таковы: 1) не нужно при обновлении архива обновлять рабочую таблицу (ставить там единицы), тем самым запирая ее в транзакции; 2) не нужно при в рабочей таблице постоянно ставить нули, тратя на это драгоценные байты кода; 3) можно сделать повторное обновление архива; 4) обновление архива можно делать за произвольный период изменения рабочей таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 14:20:37 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Ну начнем с того, что когда эта база создавалась, она была на Аккесс -)) А потом мне просто не захотелось ломать уже существующую логику.. А если бы с нуля её проектировал, то наверно все по другому сделал бы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 14:43:28 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Т.е. если я правильно понял, я ввожу новое поле с типом timestamp. А в какой таблице его лучше вводить? Не пользовался ни разу, поэтому и спрашиваю. И как правильно использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 16:23:47 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Введите во все таблицы БД. Потом понадобятся. Затем создайте табличку "ВременнАяМетка". И храните в ней значение @@DBTS для БД. Это значение сравнивайте с текущем значением @@DBTS. Все строки, значения поля типа TimeStamp которых попадает между этими значениями, изменились (либо добавились) и эти строки необходимо перенести в архив. После операции обновления архива - занесите новое значение @@DBTS в таблицу "ВременнАяМетка". P.S. 1. Схема не работает при удалении записей. 2. Архив будет слегка отставать по времени от рабочей БД, особенно когда БД активно используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 16:51:55 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Хотел было брякнуть про "лог шипинг", но решил не вякать :). Ибо следующий вопрос будет - а что это такое... ИМХО, очень вредно для здоровья связывться с логшипингом тем, кто не разобрался с timestamp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 16:56:42 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Попробуйте примерно вот так. У меня на простом примере сработало. Никаких специальных временных меток не нужно. Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2002, 17:34:51 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Пример хороший, но вылетает ошибка при преобразовании типа varchar (АрхивнаяТаблица.ts)=РабочаяТаблица.ts в тип timestamp... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2002, 10:56:24 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Я использовал @@DBTS как возвращаемый параметр ХП: @ТекущаяВременнАяМетка AS TIMESTAMP OUTPUT А в ADO ловил, как : ("ТекущаяВременнАяМетка", adInteger, adParamOutput) Года на 3-4, я думаю, хватит :-)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2002, 11:13:03 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Привет всем.Подскажите пожалуста что такое Timestamp? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2002, 12:11:31 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Сорри.Нашел на форуме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2002, 12:18:40 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Тот код, который был дан в этом примере, работает только для удаленных и добалвенных записей, а вот для измененных не работает... Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2002, 14:04:57 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
А какое движение происхоит по активной базе? когда происходит резерв? Если данные сохраняются в момент когда на серваке никого нет и долго не будет может все таки лучше дропнуть все и не забивать себе мозги не нужными процессами. Соотношение производительность/цена в данном случае явно повыше будет чем проводить анализ наличия либо отсутствия изменения данных в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2002, 15:52:54 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
1. «...код ...работает только для удаленных и добалвенных записей, а вот для измененных не работает...» Приведите, пожалуйста, описание рабочей и архивной таблиц в том виде, в каком они сейчас находятся у Вас в базе. У меня на тестовом примере работало. В Ваших таблицах возможно есть какие-то нюансы. 2. «...вылетает ошибка при преобразовании типа varchar (АрхивнаяТаблица.ts)=РабочаяТаблица.ts в тип timestamp...» Тип поля "АрхивнаяТаблица.ts" должен быть не "varchar(x)", а "varbinary(8)". Как ответите, бросьте, пожалуйста, SMS на +79272040263. Можно отсюда . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2002, 12:26:37 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
У меня две таблицы с абсолютно одинаковой структурой (просто в разных базах: первая Zavod - в рабочей базе Remont, вторая Zavod - в архивной базе Archiv_Remont). Есть 4 поля: ID_Plnt = (bigint), PK, Identity - Yes (Not for replication); Zav_isp = (int) Zavod = (char) ts = в архивной таблице (varbinary(8)), и в рабочей (timestamp). Правда, в архивной таблице в поле ID_Plnt Identity = No. Но я не знаю играет ли это какую-нибдуь роль при обновлении, но при Identity = Yes, он не может вставить данные и ругается. Я исправляю данные в рабочей таблице, допустим, меняю значение поля Zavod, выполняю код, но обновления в архиве не происходит... Я в недоумении, почему??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2002, 13:24:47 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
А у меня почему-то работает. В приведенном ниже примере во избежание неприятностей создаются две новые базы данных. Код: plaintext 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2002, 15:08:50 |
|
||
|
Сравнение двух одинаковых таблиц...
|
|||
|---|---|---|---|
|
#18+
Огромная признательность и благодарность Александру Юдакову!!! Все заработало!УРА!!! Я понял свою ошибку. Дело в том, что при обновлении архива я обновлял и поле ID_Plnt, а этого не нужно было делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2002, 09:51:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32052376&tid=1820065]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 387ms |

| 0 / 0 |
