|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
есть таблица T1 (ID, Name, RowNum) делаем в неё вставку из таблицы T2(ID, Name) Код: sql 1. 2.
необходимо чтобы после вставки в T1.RowNum записывался по порядку номер начиная с 1-цы т.е. например после первой вставки 2-х строк в T1 было так: Код: sql 1. 2. 3.
а после второй вставки ещё 1 строки было уже так: Код: sql 1. 2. 3. 4.
Сиквенс не хотелось бы использовать, потому что при удалении строк потом будут дырки, т.е. нужно при каждой вставке находить сначала максимальное значение RowNum, прибавлять 1-цу и с неё дальше продолжать нумерацию строк. Вот как такое написать в инсёрте? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 16:30 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter, при указанном вами алгоритме "дырки" никуда не денутся. Нумеруйте при запросе, зачем в базе номера хранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:13 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
Владислав Колосов, я имел ввиду, что если удаляются последние записи, а потом идёт новая вставка, то при автоинкременте будет дырка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 19:18 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter я имел ввиду, что если удаляются последние записи, а потом идёт новая вставка, то при автоинкременте будет дырка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2021, 21:58 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
alexeyvg verter я имел ввиду, что если удаляются последние записи, а потом идёт новая вставка, то при автоинкременте будет дырка. Об этом он ишо не подумал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 09:50 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
aleks222 alexeyvg пропущено... А если не последние? Об этом он ишо не подумал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 10:28 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
я подумал, про удаление каких то других записей речь не идёт. условия задачи такие: нужно при добавлении записей продолжать нумерацию относительно максимального номера, запись с которым существует в таблице на момент вставки. Было: 1 2 3 4 5 удалили 2,3, после добавили 1 строку, должно получиться так: 1 4 5 6 теперь удаляем 5,6, после добавляем 1 строку, должно получится так: 1 4 5 а не так: 1 4 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 13:31 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter я подумал, про удаление каких то других записей речь не идёт. условия задачи такие: нужно при добавлении записей продолжать нумерацию относительно максимального номера, запись с которым существует в таблице на момент вставки. Было: 1 2 3 4 5 удалили 2,3, после добавили 1 строку, должно получиться так: 1 4 5 6 теперь удаляем 5,6, после добавляем 1 строку, должно получится так: 1 4 5 а не так: 1 4 7 Внимание! Вопрос: Чем ЭТО отличается от банального IDENTITY? ЗЫ. Изобретаем непромокаемый порох. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 13:56 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter, 1. Такое поведение нужно из эстетических соображений или есть реальная необходимость? 2. Подумали что будет происходить при конкурентной вставке в таблицу? 3. Насколько часто удаляются данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 14:26 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
aleks222 verter я подумал, про удаление каких то других записей речь не идёт. условия задачи такие: нужно при добавлении записей продолжать нумерацию относительно максимального номера, запись с которым существует в таблице на момент вставки. Было: 1 2 3 4 5 удалили 2,3, после добавили 1 строку, должно получиться так: 1 4 5 6 теперь удаляем 5,6, после добавляем 1 строку, должно получится так: 1 4 5 а не так: 1 4 7 Внимание! Вопрос: Чем ЭТО отличается от банального IDENTITY? ЗЫ. Изобретаем непромокаемый порох. Так тем и отличается, что при IDENTITY будет вставлено 7, а не нужные 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 01:55 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
invm verter, 1. Такое поведение нужно из эстетических соображений или есть реальная необходимость? 2. Подумали что будет происходить при конкурентной вставке в таблицу? 3. Насколько часто удаляются данные? 1. Такое условие задачи 2. Вставка будет исключительно однопользовательская 3. 1 раз в сутки ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 01:57 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter invm verter, 1. Такое поведение нужно из эстетических соображений или есть реальная необходимость? 2. Подумали что будет происходить при конкурентной вставке в таблицу? 3. Насколько часто удаляются данные? 1. Такое условие задачи 2. Вставка будет исключительно однопользовательская 3. 1 раз в сутки insert into tbl(fld, otherField) select isnull(max(fld),0)+1, @ValueForOtherField from tbl WITH (TABLOCK) PS Постановщик задачи уже готов к вопросу: "Какого х[рен]а я вставлял позавчера свою инфу под цифрой 6, а сегодня под цифрой 6 вообще какая-то левая шняга?!" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 03:58 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter aleks222 пропущено... Внимание! Вопрос: Чем ЭТО отличается от банального IDENTITY? ЗЫ. Изобретаем непромокаемый порох. Так тем и отличается, что при IDENTITY будет вставлено 7, а не нужные 5 Обуйтесь уже на обе ноги. Либо дырки допустимы и пофиг где они. Либо нет - и это уже идиотизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 08:05 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter 1. Такое условие задачи 2. Вставка будет исключительно однопользовательская 3. 1 раз в сутки 1. Сделать в T1 индекс по RowNum 2. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 10:02 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
verter Так тем и отличается, что при IDENTITY будет вставлено 7, а не нужные 5 Вы перфекционист или боитесь, что когда-то закончатся свободные числа? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 11:05 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
Типичная ошибка логики. Вы делаете попытку возложить на одно поле две несвязанные и, что главное, несвязываемые, функции. Первая - то, что собственно делает первичный ключ. Однозначно идентифицировать запись. Сейчас IDENTITY с этим прекрасно справляется. А что дырки - так это даже правильно, потому что однозначная идентификация - она на весь срок жизни таблицы. Обращаю внимание - именно таблицы, а не записи. То, что запись удалена, никак не влияет, и именно поэтому дырка - не только допустимо, но и правильно. Вторая - это непрерывная нумерация записей. Если хотите, чтобы в таблице присутствовала подобная функция - заводите для неё ещё одно, дополнительное, поле, и для каждой новой записи ищите и подставляйте значение, которое соответствует этой цели. Например, в триггере. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:24 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
Akina Вторая - это непрерывная нумерация записей. Если хотите, чтобы в таблице присутствовала подобная функция - заводите для неё ещё одно, дополнительное, поле, и для каждой новой записи ищите и подставляйте значение, которое соответствует этой цели. Например, в триггере. О великий гуру! Чего делать с этой "непрерывной нумерацией" при удалении? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 15:26 |
|
Как при вставке добавлять следующий номер?
|
|||
---|---|---|---|
#18+
aleks222 Чего делать с этой "непрерывной нумерацией" при удалении? Например, перенумеровывать. От фонаря, лишь бы в итоге получить последовательную непрерывную нумерацию от единицы. Ну или переместить записи с наибольшими номерами, заполнив ими появившийся промежуток. Или сдвинуть записи после промежутка, чтобы опять же получить непрерывную нумерацию, и при этом сохранить относительное местоположение. Или НЕ перенумеровывать. Но новые записи вставлять в образовавшиеся промежутки, и только после их заполнения продолжить присоединение к концу списка. Может, можно и ещё что придумать... При этом единственный, кто может ответить на поставленный вопрос - это собственно автор вопроса. Я-то фиг знает, что ему нужно... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 15:49 |
|
|
start [/forum/topic.php?fid=46&msg=40090956&tid=1684407]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 132ms |
0 / 0 |