powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Удаление и id
23 сообщений из 23, страница 1 из 1
Удаление и id
    #38673971
shalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем ,
"`id` INTEGER PRIMARY KEY," потом удаляю по "id"
"DELETE FROM t_table WHERE id = 2"
удаляться на славу , однако теряется нумерация

id
1
3
4
5
как удалить но не сбить нумерацию ?
...
Рейтинг: 0 / 0
Удаление и id
    #38674021
shalx,

давай начнем с другой стороны. где и зачем тебе нужна сквозная нумерация без пропусков?
...
Рейтинг: 0 / 0
Удаление и id
    #38674045
shalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прога для бухгалтерии и нужно всегда нумеровать строки без пробелов
...
Рейтинг: 0 / 0
Удаление и id
    #38674123
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalxпрога для бухгалтерии и нужно всегда нумеровать строки без пробелов

тогда это поле не должно использоваться в качестве PRIMARY KEY
только и всего
...
Рейтинг: 0 / 0
Удаление и id
    #38674156
shalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нумерация обязательно , хорошо бы вывести "recNo" но не знаю как
...
Рейтинг: 0 / 0
Удаление и id
    #38674611
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalxнумерация обязательно , хорошо бы вывести "recNo" но не знаю как

нумерацию в нужном порядке восстанавливать после удаления можно как угодно
но использовать это поле в качестве первичного ключа - полная безграмотность
запомни навсегда - значимое поле никогда не используй в качестве ключа
дискутировать на этот счет можно бесконечно, но лучше просто принять за аксиому
...
Рейтинг: 0 / 0
Удаление и id
    #38674677
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskзапомни навсегда - значимое поле никогда не используй в качестве ключа
дискутировать на этот счет можно бесконечно, но лучше просто принять за аксиомуВот и еще один кандидат на отрывание рук и головы.
В качестве первичного ключа всегда надо брать тот который наиболее удобен для кластерного индекса и для создания внешних ключей. Является ли при этом используемое поле естественным или суррогатным это уже вторично.
Хотя лично я за суррогантные ключи убивал бы.


shalx, не удаляй строки вообще. Помечай их "удаленными" и прячь от показа, но физически не удаляй. Тогда у тебя будет возможность откатить назад и показать что вот такая-то проводка была удалена МарьВанной в такой-то день и пусть уже МарьВанна объясняет почему она удалила проводку. А если ты будешь удалять строки физически, то уже ничего потом не сможешь доказать - программа потеряла пару миллионов, значит виноват программист.
...
Рейтинг: 0 / 0
Удаление и id
    #38674695
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

угу, сколько версий id = 2 будет у него в таблице??? ему же нужно восстановить последовательность. а откат и показ марьивановне организуется совсем иначе
...
Рейтинг: 0 / 0
Удаление и id
    #38674705
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskWhite Owl,

угу, сколько версий id = 2 будет у него в таблице??? ему же нужно восстановить последовательность. а откат и показ марьивановне организуется совсем иначеЯ же сказал: за суррогатные ключи отрывать руки и ноги. Голову оставлять чтобы она страдала.
...
Рейтинг: 0 / 0
Удаление и id
    #38674745
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlХотя лично я за суррогантные ключи убивал быжаль только, естественных ключей в природе (почти) не встречается, а в остальном, прекрасная маркиза, все хорошо.
...
Рейтинг: 0 / 0
Удаление и id
    #38674772
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fd00chWhite OwlХотя лично я за суррогантные ключи убивал быжаль только, естественных ключей в природе (почти) не встречается, а в остальном, прекрасная маркиза, все хорошо.Глупости. Всегда можно найти естественный ключ. Чтобы это ни было. Для любой задачи, для любой таблицы.

Только если естественный ключ получается очень длинным и на нем еще надо основывать внешние ключи - тогда и только тогда целесообразность суррогатного может подрасти настолько что его можно будет использовать. Но даже тогда - без серьезной обвязки триггерами суррогаты это верный путь к потере целостности данных и вечная головная боль при поиске данных в зависимых таблицах.
...
Рейтинг: 0 / 0
Удаление и id
    #38674942
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlfd00chпропущено...
жаль только, естественных ключей в природе (почти) не встречается, а в остальном, прекрасная маркиза, все хорошо.Глупости. Всегда можно найти естественный ключ. Чтобы это ни было. Для любой задачи, для любой таблицы.


Хм.
Вы из какой предметной области вышли - деньги печатаете? :)

В моей практике естественный ключ всегда получается составной
люди любят чтобы объекты с нового года/месяца нумеровался начиналась с 1 т.е. приходится приклеивать "год"
а с составным PK это гарантированное снижение эффективности:

- Увеличение объема индексов и дочерних таблиц (представь что FK-полей тысячи)
- Обрабатывать на триггерах ID проще чем составной кей (в Оракле часто нужно прокидывать ID для обхода мутаций на операторном триггере)
- На клиенте master-detail делать проще
- и т.д. и т.п.

и про вечную головную боль вообще не понял - можно пример из жизни в чем боль то?
видел много систем и все на синтетике - никаких проблем не наблюдается
в 1С используют GUID
в SAP - ключ суррогатный но составной т.к. содержит мандант.

Также если PK - естественный - возникает большой гемор при его апдейте(и вообще это очень опасно и часто такое запрещают на триггерах)

Представь что человек ввел документ номер 3 и приделал к нему кучу дочерних документов
а потом оказалось что нужно дать документу номер 2

Ваши действия?
...
Рейтинг: 0 / 0
Удаление и id
    #38674955
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlshalx, не удаляй строки вообще. Помечай их "удаленными" и прячь от показа, но физически не удаляй. Тогда у тебя будет возможность откатить назад и показать что вот такая-то проводка была удалена МарьВанной в такой-то день и пусть уже МарьВанна объясняет почему она удалила проводку. А если ты будешь удалять строки физически, то уже ничего потом не сможешь доказать - программа потеряла пару миллионов, значит виноват программист.

Тут вообще не согласен - левый пример и аргумент
Для отлова марьивановны существуют логи на триггерах
они журналируют не только удалении, но и всю историю вставок-апдейтов-удалений.
т.к. потерять деньги можно и корректировкой.
...
Рейтинг: 0 / 0
Удаление и id
    #38675278
shalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В каком из баз данных возможно решить данную проблему?
...
Рейтинг: 0 / 0
Удаление и id
    #38675283
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalxВ каком из баз данных возможно решить данную проблему?

похоже ты даже не удосуживаешься читать сообщения
наверно ищешь с пометкой - вот готовый код?
...
Рейтинг: 0 / 0
Удаление и id
    #38675457
shalx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"суррогатные ключи" для меня как китайский , не прошу "готовый код", просто если знаете какaia из баз самая лутшая для локали скажите пожалуйста
...
Рейтинг: 0 / 0
Удаление и id
    #38675924
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAВ моей практике естественный ключ всегда получается составной
люди любят чтобы объекты с нового года/месяца нумеровался начиналась с 1 т.е. приходится приклеивать "год"
а с составным PK это гарантированное снижение эффективности:Но ведь естественный ключ у тебя все равно есть. Ты его боишься использовать по причине его длины, но он есть.

PPA - Увеличение объема индексов и дочерних таблиц (представь что FK-полей тысячи)
- Обрабатывать на триггерах ID проще чем составной кей (в Оракле часто нужно прокидывать ID для обхода мутаций на операторном триггере)
- На клиенте master-detail делать проще
- и т.д. и т.п.Все верно. Но проще не значит надежнее.

PPAи про вечную головную боль вообще не понял - можно пример из жизни в чем боль то?
видел много систем и все на синтетике - никаких проблем не наблюдаетсяДа, можно и с синтетическими ключами жить. Если сделать хорошие и правильные триггера для слежения за целостностью...
А примеры из жизни... ой... Может большинство моих примеров слегка устарели, но я свою карьеру начинал на Clipper и FoxPro. В те времена хорошим PK считался номер строки и про триггеры никто ничего не знал... Мне приходилось чинить целостность баз.

А из современных, ну вот есть у нас в работе сейчас одна поделка, которую явно делали поколения архитекторов баз. Программе всего-то девятнадцать лет, а смотря на структуру базы я четко вижу как минимум четыре стиля проектирования. В некоторых таблицах есть по три суррогатных ключа (somthing_id, something_token и key). Ведомые таблицы ссылаются на эти ключи (иногда на два сразу), но эти ссылки как внешние ключи не объявлены, потому что не все они могут быть удовлетворены. По сути таблицы появившиеся в базе за 90-ые годы надо читать на основе key, таблицы созданные в период 2001-2004 надо читать используя *_id, а все что было добавлено в базу после использует *_token (или *_id, угадывай на per-table basis).
В качестве СУБД MS SQL, но в базе нету ни единого триггера. Вся логика вынесена на клиента. Не так давно разработчики наконец-то догадались поднять уровень изоляции транзакций, так хоть коллизий по ключам последние три года не было.


Да, с суррогатными ключами жить можно. Я видел и хорошие системы использующие всяческие абстрактные id для ключей.
Но у суррогатов есть неприятная особенность - со временем они превращаются в естественные :)
У нас есть система учета в которой все завязано на PID. В начале это был типичный суррогатный ключ - просто номер регистрации клиента по порядку. Но сейчас, когда клиент приходит за какой-нибудь справкой его спрашивают: "а какой у вас PID?"


PPAТакже если PK - естественный - возникает большой гемор при его апдейте(и вообще это очень опасно и часто такое запрещают на триггерах)Да.
Кстати обрати внимание с чего начался этот топик.

PPAПредставь что человек ввел документ номер 3 и приделал к нему кучу дочерних документов
а потом оказалось что нужно дать документу номер 2

Ваши действия?Просто так ничего "оказаться" не может. Если в вашей конторе может "оказаться" что надо документ номер 3 превратить в документ номер 2, то у вас обязательно будет какое-то "распоряжение начальника на перенумерацию". Вот это распоряжение значит и надо вводить в базу как отдельный документ привязанный к основному документу.
...
Рейтинг: 0 / 0
Удаление и id
    #38675926
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalx"суррогатные ключи" для меня как китайский ,Учись.
shalx не прошу "готовый код", А что же ты просишь?
shalxпросто если знаете какaia из баз самая лутшая для локали скажите пожалуйстаSQLite. Лучшая из встраиваемых.

Кстати что это за бухгалтерия такая которой нужна встраиваемая база? Ты уверен что у тебя всегда будет только один клиент?
...
Рейтинг: 0 / 0
Удаление и id
    #38676136
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

ТС не имеет представления про естественные и суррогатные ключи, а ты ему про встраемость движка субд :)
совсем ребенка запутаешь
...
Рейтинг: 0 / 0
Удаление и id
    #38676235
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПросто так ничего "оказаться" не может. Если в вашей конторе может "оказаться" что надо документ номер 3 превратить в документ номер 2, то у вас обязательно будет какое-то "распоряжение начальника на перенумерацию". Вот это распоряжение значит и надо вводить в базу как отдельный документ привязанный к основному документу.

По распоряжению идут корректировки только в закрытом периоде (месяц)
т.к. они уже ушли в SAP ERP и его сторнированние там не пройдет.
а в пределах месяца - "документы" правят без бумажек (человек любит ошибаться)
если на каждую опечатку просить распоряжение - остановим производство :)
...
Рейтинг: 0 / 0
Удаление и id
    #38676255
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAWhite OwlПросто так ничего "оказаться" не может. Если в вашей конторе может "оказаться" что надо документ номер 3 превратить в документ номер 2, то у вас обязательно будет какое-то "распоряжение начальника на перенумерацию". Вот это распоряжение значит и надо вводить в базу как отдельный документ привязанный к основному документу.

По распоряжению идут корректировки только в закрытом периоде (месяц)
т.к. они уже ушли в SAP ERP и его сторнированние там не пройдет.
а в пределах месяца - "документы" правят без бумажек (человек любит ошибаться)
если на каждую опечатку просить распоряжение - остановим производство :)Значит PK выбран не верно.

Если ты хочешь чтобы существовал "период свободного переименования документа", то значит выноси этот документ в отдельную таблицу, типа "незаконченных документов", и делай в качестве PK время когда документ был создан. И правь остальные поля как угодно. А по закрытию месяца все документы из этой таблицы переносятся в таблицу "архива". А таблица "незаконченных" очищается. В этой схеме можно сделать и плавающее архивирование - месяц документ не изменялся - он считается законченным.
А еще лучше - поговори со своими бухгалтерами, лучше с со старшим поколением. И узнай как они решали вопрос перенумерации документов когда все документы были бумажными. А потом повтори их инструкции, уже в варианте БД.
...
Рейтинг: 0 / 0
Удаление и id
    #38676257
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskWhite Owl,

ТС не имеет представления про естественные и суррогатные ключи, а ты ему про встраемость движка субд :)
совсем ребенка запутаешьНе запутаю, а запугаю.
Либо спровоцирую на учебу.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Удаление и id
    #39283222
Massaraksh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owlза суррогатные ключи отрывать руки и ноги. Голову оставлять чтобы она страдала.
Не согласен.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Удаление и id
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]