|
|
|
Пронумеровать строки таблицы
|
|||
|---|---|---|---|
|
#18+
Есть поле таблицы с автоинкрементом. По некоторому условию удаляются первые 5 строчек таблицы. Необходимо перенумеровать (обновить) этот столбец. Подскажиет пожалуйста с помощью какого запроса это возможно реализовать. Сначало думал, удалять столбец и создавать заново, но этого нельзя сделать в триггере. Хотелось бы сделать все апдейтом. Или есть какая либо возможность обновлять столбец с автоикрементом? Пока сделал так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Только почему-то не работает, несмотря на то, что тело триггера, если выполнять отдельно как запросы приводит таблицу к требуемому виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 16:39:51 |
|
||
|
Пронумеровать строки таблицы
|
|||
|---|---|---|---|
|
#18+
alexeevv, тут два простых правила: #1. никогда не меняйте ИД (если он первичный ключ) #2. если вам когда-нибудь понадобится поменять ИД, применяйте пунк #1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:12:16 |
|
||
|
Пронумеровать строки таблицы
|
|||
|---|---|---|---|
|
#18+
Это необходимость вызвана следующей задачей: В бд из клиентского приложения приходит 5 инсертов. когда количество записей становится равным 50, первые пять необходимо удалить, т.е. удалить не акутальную информацию. Думал так, как сделал я - будет хорошо. Если ли ещё каки-нибудь варианты? Клиенсткое приложение можно тоже поправить как угодно, галвное чтобы смысл сохранился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:17:08 |
|
||
|
Пронумеровать строки таблицы
|
|||
|---|---|---|---|
|
#18+
alexeevv, добавить в таблицу поле "номер". Клиентское приложение пусть после ввода своих записей вызывает процедуру "check_for_50", в которой будет снос лишних записей и перенумерация оставшихся (то, что вы хотели в триггер запихнуть). А ид и вправду не трогать лучше, если необходимости в том нет наисущественнейшей (а у вас её нет точно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:26:09 |
|
||
|
Пронумеровать строки таблицы
|
|||
|---|---|---|---|
|
#18+
Хорошо, спасибо! Завтра попробую реализовать из клиента! А вообще, я попробывал выполнить insert на сервере, что вызывало ошибку Can't update table '' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. Как я понимаю, немотря на то, что триггер должен вызываться по insert, по внутреннему update он тоже вызовется и возникнет рекурсия? И вообще как бы этого избежать? И почему нельзя менять id? Просто моя бд, состоит из пары таблиц, который даже никак не связаны между собой. Просто, хочу получше во всем разобраться=) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:43:01 |
|
||
|
Пронумеровать строки таблицы
|
|||
|---|---|---|---|
|
#18+
alexeevvпо внутреннему update он тоже вызовется и возникнет рекурсия?и именно поэтому он и не вызовется нельзя изменять в триггере ту же таблицу, на изменение которой он повешен alexeevvИ почему нельзя менять id? Просто моя бд, состоит из пары таблиц, который даже никак не связаны между собой.потому что потом к ним могут добавиться другие или потому что вы привыкнете менять ид и станете делать это там, где это явно не надо делать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 17:54:27 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38327133&tid=1836474]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 330ms |

| 0 / 0 |
