Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-03 00:00:49 |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Андрюха писал(а): DELETE |
|||
карма: 25 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-03 00:00:49 |
|||
карма: 0 |
|
Ответов: 211
Рейтинг: 52
|
|||
INSERT INTO "fio" VALUES('Иванов','Петр','Сидорович') WHERE NOT EXISTS (SELECT * FROM "fio" WHERE f = 'Иванов' AND i = 'Петр' AND o = 'Сидорович');
Запрос добавит в таблицу fio соответствующие значения если строка выбираемая во встроенном запросе SELECT не найдена. Запрос пишется немного иначе, но так понятней механизм. |
|||
карма: 1 |
|
Ответов: 26
Рейтинг: 1
|
|||
Minkovsky писал(а): INSERT INTO "fio" VALUES('Иванов','Петр','Сидорович') WHERE NOT EXISTS (SELECT * FROM "fio" WHERE f = 'Иванов' AND i = 'Петр' AND o = 'Сидорович');Ошибка near "WHERE": syntax error т.е. после поля VALUES ничего не может идти. |
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-03 00:00:49 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Силами только SQL - фиг. Скорее всего можно файл самому разобрать и снять признак удаления, или как оно там работает. Вроде описание формата на сайте sqlite есть
|
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-03 00:00:49 |
|||
карма: 0 |
|
Ответов: 211
Рейтинг: 52
|
|||
Amig0, Возможно уже и не актуально сие решение, но реализовать можно так:
1. создаем временную таблицу temp с тем же набором полей, что и основная 2. делаем запись в нее (можно несколько) 3. сравниваем 2 SELECT'а основной и временной. По факту совпадений выдаем сообщение о дубликатах. 4. выполняем запрос INSERT INTO fio SELECT * FROM temp WHERE NOT EXISTS (SELECT DISTINCT * FROM fio WHERE f='iva' AND i='iva' AND o='iva'); копирующий все записи, за исключением дубликатов (предикат DISTINCT) и уже найденых в рабочей базе 5. таблицу temp удаляем. зы. предыдущий запрос проверял на Oracle RDB/VMS на работе - прокатило ззы. сейчас опять теоретически, но вроде все правильно |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-03 00:00:48 |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Степан, а какая нафиг разница - признак существования или признак удаления? Главное - есть какой-то бит (байт? ...?), который меняется при удалении, и по которому VACUUM определяет, удалять данные или нет
|
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-02 23:59:10 |
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Степан писал(а): может ты, как спец, чем поможешьНу, в базах я сам только учусь у Tad'a и Alexbotch'a, они неплохо в них шарят. Кстати, Alexbotch еще не выступил по этому вопросу. |
|||
карма: 22 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2022-04-02 23:59:10 |
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Если дубово подойти, и именно по признаку удаления (?) попытаться пересоздать базу на основании бинарных данных, то можно попробовать. Правда, не знаю, что из этого получится, но, попытка -- не пытка. Вопрос -- ты полностью удалил таблицу, или потер только часть данных, это очень важно
|
|||
карма: 22 |
|