|
|
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
Заранее прошу прощения за возможно глупый вопрос. Но я так и не понял, что делать при удалении строки с полем, скажем, id identity(1,1), чтобы его unique id освобождался и следующая запись принимала этот id, а не на единицу больше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2002, 16:54:00 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2002, 17:15:22 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
Токо на триггер Delete повесьте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2002, 17:19:30 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 09:56:20 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 akuz Это сработает только для случая, если удаляются последние записи (с наивысшим ID). Иначе - остаются дыры в последовательности: Код: 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. ЗЫ Конечно, все зависит от того, что же всетаки подразумевалось под этим: " Но я так и не понял, что делать при удалении строки с полем, скажем, id identity(1,1), чтобы его unique id освобождался и следующая запись принимала этот id, а не на единицу больше? " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 11:07:48 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
Пмсать свой механизим вычесления id -мне по этому поводу ничего другого придумать не удалось (правда решал эту задачу на оракле - да не забьют меня камнями :)) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 11:16:20 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 Jimmy остаются дыры в последовательности Автоинкремент на то и автоинкремент, чтобы лишь наращивать значения ключа, а не поддержиать последовательность без дыр. Для поддержания такой последовательности надо использовать первичный ключ без инкремента и при вставке записи вычислять первую не заполненную дырку. Беда в том, что при этом без курсора не обойтись :( Да в общем то и смысла особого дырки заполнять не вижу. А если, например в процессе разработки или тестирования на рабочей системе вы чего-то в таблицы временно заносите, а затем удаляете, то dbcc checkident как раз и помогает в данной ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 13:01:06 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 akuz - задача была такая Есть набор "документов" и их нумерация не должна содержать пробелов соответственно номер есть признак а не pk - так еще осложнялосьтем что вводиться документы могли с разных компов - и для каждого места определялся свой механизм нумерации документов а в итоге по всем документам не должно быть пропусков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 13:10:57 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 akuz Можно и без курсора обойтись для вычисления начала "дыры". Для моего скрипта (см. выше): Код: 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. 2 Larvef Только тепрь нужно будет проверять, дыра ли это или запрос вернул последнее значение ID. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 13:53:14 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 Jimmy А теперь попробуйте написать операцию вставки значений из другой таблицы с кол-вом строк > 1 без использования триггера. типа: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 14:36:40 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 akuz Так я о триггерах ничего и не говорил в данном трэде :0)) И вообще не обсуждал целесообразность такой гибридной систему нумерации, т.к. изначально понятно, что будут капканы, напрмер возможные конфликты номеров при интенсивных вставках и наличии дыр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 14:44:42 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 Jimmy Сори, обшибся, я имел ввиду курсор , конечно, а не триггер. А конфликты-то как раз можно уладить блокировкой ключа в транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 15:18:09 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
Позволю себе поинтересоваться, а нафига козе баян, в смысле нафига дыры латать? Ну кто нибудь может привести пример из жизни, когда это действительно нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 17:04:08 |
|
||
|
Удаление поля c autoincrement
|
|||
|---|---|---|---|
|
#18+
2 Genady смотри мой топик выше -пример из жизни :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2002, 17:06:50 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32053691&tid=1820007]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 293ms |

| 0 / 0 |
