|
|
|
это норма или не норма? insert с проверкой на уникальность
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! прошелся поиском по форуму посмотрел темы связанные с игнорированием дубликатов по UK/PK при вставке, но тема показалась не раскрытой. У меня такой кейс. Допустим есть таблица: Код: sql 1. 2. 3. 4. Выполняем запрос Код: sql 1. 2. 3. 4. Запрос вставил одну запись. Коммит не делаю, выполняю запрос еще раз. Вставил уже ноль записей. Работает ожидаемо - ОК. Делаю откат транзакции - ОК. Запись из таблицы исчезла. Выполняю чуть модифицированный запрос вставки: Код: sql 1. 2. 3. 4. 5. 6. и балалайка. Получаю ошибку нарушения уникальности. Как это понимать? Направьте плиз, тут какие то принципиальные ограничения? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2015, 01:06 |
|
||
|
это норма или не норма? insert с проверкой на уникальность
|
|||
|---|---|---|---|
|
#18+
Поролоновый слон тут какие то принципиальные ограничения? не ограничения, а здравый смысл. селект формирует две строки в соответствии с отсутствием строк в таблицы на начало выполеения. понавыдумывать порядков выполнения декларативного языка можно множество, но в базах данных главное стабильность результтата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2015, 03:32 |
|
||
|
это норма или не норма? insert с проверкой на уникальность
|
|||
|---|---|---|---|
|
#18+
Поролоновый слон, в 9.5 уже встроили конструкцию в INSERT для работы с конфликтами http://www.postgresql.org/docs/9.5/static/sql-insert.html ON-CONFLICT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2015, 09:29 |
|
||
|
это норма или не норма? insert с проверкой на уникальность
|
|||
|---|---|---|---|
|
#18+
Поролоновый слон, это норма. почитайте про последовательность выполнения запросов, и тогда, думаю, станет понятно. если коротко, то INSERT будет добавлять не построчно (каждую запись отдельно) а целиком то что получил из SELECT'а, а во время SELECT такое значение как 1 в таблице отсутсвовало. так что - норма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2015, 12:47 |
|
||
|
это норма или не норма? insert с проверкой на уникальность
|
|||
|---|---|---|---|
|
#18+
Пардон, а какое поведение ожидалось?? Что вставит одну запись а вторую нет? А тогда сколько в выражении Код: sql 1. раз должен был выполнятся подзапрос???? 2 чтоли??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2015, 13:46 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39131812&tid=1997560]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
8ms |
get forum data: |
7ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 442ms |

| 0 / 0 |
