Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Переношу данные из одной таблицы в другую. Вылетает ошибка о том что пытаюсь вставить не уникальное значение в уникальный индекс. Как это можно обойти. Т.е. добавлять такую строку в этом случае. Ниже запрос. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:24 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
leonix Т.е. добавлять такую строку в этом случае. Т.е. НЕ добавлять такую строку в этом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:26 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
leonixleonix Т.е. добавлять такую строку в этом случае. Т.е. НЕ добавлять такую строку в этом случае.Вставлять те, где row_number ( partition by <поля, которые вы пихаете в никальный индекс> order by <порядок записей, который нравится> ) равен 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:27 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Спасибо. С ходу не осилил ваш ответ. Пойду изучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:32 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
leonix, По "рабоче-крестьянски" вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:41 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Добавить в WHERE - NOT EXISTS(SELECT * FROM ... WHERE <сравнение уникальных полей>) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:51 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
iapДобавить в WHERE - NOT EXISTS(SELECT * FROM ... WHERE <сравнение уникальных полей>)Нет. Ерунду написал. Неуникальность-то появляется в источнике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 14:52 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Всем спасибо! Буду думать. Там ещё одна проблема, в таблице приемнике есть данные и они могут быть не уникальными при заливке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 15:10 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
leonix, Ну тогда MERGE into blah-blahblah USING (SELECT distinct ... ) У вас токо непонятно, что собсно Primary Key ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 15:29 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Glebanskileonix, Ну тогда MERGE into blah-blahblah USING (SELECT distinct ... ) У вас токо непонятно, что собсно Primary Key Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 15:42 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
А рассказывать про CHECK CONSTRAINT никто не хочет, так как предполагается,что проблем и ошибок в таблице после его использования будет больше, чем без использования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 15:57 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiА рассказывать про CHECK CONSTRAINT никто не хочет, так как предполагается,что проблем и ошибок в таблице после его использования будет больше, чем без использования? зачем? тогда уже просто drop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 15:59 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
TaPaKDaniilSeryiА рассказывать про CHECK CONSTRAINT никто не хочет, так как предполагается,что проблем и ошибок в таблице после его использования будет больше, чем без использования? зачем? тогда уже просто drop Вообще, тут сам собой напрашивается Merge - значения нет - кидаем в таблицу-приемник, значение есть - игнорируем. Код: sql 1. 2. 3. 4. 5. 6. Легко объединяется с идеей насчёт использования Row_Number() Гавриленко Сергей Алексеевичleonixпропущено... Т.е. НЕ добавлять такую строку в этом случае.Вставлять те, где row_number ( partition by <поля, которые вы пихаете в никальный индекс> order by <порядок записей, который нравится> ) равен 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:06 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Блин, кто так поля называет. Руки бы оторвал. В SAP-e и то понятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:21 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
GlebanskiБлин, кто так поля называет. Руки бы оторвал. В SAP-e и то понятнее. 1С похоже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:22 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
leonix, И да, distinct не пользуйте. Row_number лучше. с вашим Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:24 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Aargh! опять чушь написал. Если у ТС уже CONSTRAINT существует на исходной таблице, то там значения по любому уникальные уже. Тогда ему у Row_number никакой не нужен и вообще дедупликация. Простой MERGE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:27 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
MERGE сам по себе никакого преимущества по сравнению с INSERT не даёт. SELECT из источника должен быть без дубликатов уникальных полей - применяем ROW_NUMBER(), выбираем с номером 1. INSERT должен проверять, нет ли уже в таблице такого же значения уникальных полей, которые поставляет SELECT - применяем WHERE NOT EXISTS(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:42 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
iap, У ТС там уже Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:53 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Glebanskiiap, У ТС там уже Код: sql 1. Значит, у него не худший вариант. Я рад за него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2018, 16:56 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Для совсем ленивого решения можно пересоздать UNIQUE с указанием: Код: sql 1. Быстродействие, возможно, будет еще то и структурно использование данного флага мне не нравится, но для разовой операции может и сгодиться. Впрочем, на Azure SQL Database (ну нету обычного под рукой, извините) быстродействие не отличается: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. И план одинаковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 00:59 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, вроде перенёс. Теперь другая проблема. Я же нумерацию испортил, чтобы не было дублей Код: sql 1. Теперь нужно восстановить её обратно. Нумерация в рамкам "[_Fld223],--объект" и порядок по полю "[_Fld251], --дата версии". Т.е. создать нумерацию версий по объекту по хронологии. Понимаю что через update делать и как то прикрутить "row_number ( partition by <поля, которые вы пихаете в никальный индекс> order by <порядок записей, который нравится> ) " Но мало опыта. Подскажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2018, 16:38 |
|
||
|
Как обойти ошибку попытки вставки не уникального значения в индекс через insert into selec
|
|||
|---|---|---|---|
|
#18+
leonix, новое поле в таблице сделайте, в нем - что хотите - восстановите. Потом дропните предыдущее, а это новое - переименуйте. И вообще, если таблица не очень большая, не миллиарды записей - просто пересоздайте таблицу целиком, как вам хочется. Создайте рядом, перезалейте данные, старую сделайте _old, новую - переименуйте как старую. С FK только не факапните. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 09:05 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39733650&tid=1688754]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 428ms |

| 0 / 0 |
