У меня есть несколько уродливая проблема с существующей базой данных. Эта база данных имеет Transaction_Items
таблицу, которая содержит элементы строки для каждой операции (упрощенно):«Вставить» новую строку с наименьшим идентификатором в SQL Server
Transaction_Item_ID(Identity - Auto) Transaction_ID Item_Name
-----------------------------------------------------------------
1 12345 Service1
2 12345 Service2
3 12345 Service3
4 12346 Service1
Эти операции показывают на счете-фактуре и приложения всегда упорядочивает их на тот счет-фактуру на основе Transaction_Item_ID
.
Мне нужно добавить элемент обслуживания к конкретным транзакциям, которые всегда будут отображаться первыми, назовем его имя объекта MEMO
. В противном случае предметы должны оставаться в том же порядке. Поэтому для этого элемента MEMO
всегда необходимо иметь самый низкий Transaction_Item_ID
из тех, которые соответствуют транзакции. Потому что Transaction_Item_ID
- это столбец автоматической идентификации. Я не могу просто изменить его на меньшее значение. Я думаю, что в основном мне нужно обновить Item_name
первой строки до MEMO
, копируя существующее имя элемента в следующую нижнюю строку и так далее, пока предыдущее значение последней строки не будет вставлено в новую строку.
Вопрос в том, как это сделать или если есть лучший способ достичь того же результата.
В основном заканчивается так:
Transaction_Item_ID(Identity - Auto) Transaction_ID Item_Name
-----------------------------------------------------------------
1 12345 MEMO
2 12345 Service1
3 12345 Service2
4 12346 Service1
5 12345 Service3
EDIT Чтобы уточнить: у меня нет доступа, чтобы изменить приложение, которое в противном случае с помощью этой таблицы. Я не могу добавить новый столбец в таблицу.
Я знаю, что значение идентификатора не может/не должно изменяться, поскольку это может вызвать беспорядок. Вот почему я предполагаю, что единственным ответом будет «переместить» имя элемента «вниз» строк.
Да, это уродливое и далекое от идеала. К сожалению, работа с устаревшими приложениями и использование лучших из них - это реальность во многих бизнесах. По крайней мере, у меня действительно есть доступ на чтение/запись в базу данных.
Это не то, что нужно сделать, ИМО. Вы должны действительно просто изменить запрос, который тянет данные из таблицы, чтобы иметь собственный заказ заявление. например 'Заказ на случай, когда item_name =«памятка», то 0 еще один конец, transaction_item_id' – ZLK
Почему вы не вставить, что со значением' -1' для 'transaction_item_id'? –
Вы ** не можете ** обновить существующее значение в столбце «identity» - SQL Server позволяет ** вставлять ** определенные пользовательские значения с помощью команды «SET IDENTITY_INSERT ON», но вы можете ** никогда не обновлять существующего значения столбца 'identity'. –