Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Транзакции и UNIQUE
|
|||
|---|---|---|---|
|
#18+
Есть такая фукция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Структура таблицы words: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. При массовых паралелных вызовах SELECT * FROM add_one_word("ляляля") переодически возникают ошибки "Повторный ключ нарушает констрейнт UNIQUE word_name..." Как с этим бороться не подскажете ? Вроде же процедура выпоняется в рамках одной транзакции и по идее ошибок возникать не должно Или я туплю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:19 |
|
||
|
Транзакции и UNIQUE
|
|||
|---|---|---|---|
|
#18+
golden13Или я туплю?Именно так. Представьте. Вы выполняете Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:44 |
|
||
|
Транзакции и UNIQUE
|
|||
|---|---|---|---|
|
#18+
+1. А задача есть и в доке, и в обсуждении. поиск дает: http://sql.ru/forum/actualsearch.aspx?search=INSERT+SELECT+EXCEPTION+UNIQUE_VIOLATION&sin=0&a=&ma=0&bid=7&dt=-1&s=1&so=1 посмотрите внимательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:53 |
|
||
|
Транзакции и UNIQUE
|
|||
|---|---|---|---|
|
#18+
ок, понял вроде так должно быть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Единственный вопрос есть: можно ли гарантировать что в данном коде SELECT INTO newid currval('public.words_id_seq'); вернёт именно id данной добавленной записи (вроде по доке так и должно быть) а не добавленной в паралельном потоке в это же время ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 11:59 |
|
||
|
Транзакции и UNIQUE
|
|||
|---|---|---|---|
|
#18+
golden13Единственный вопрос есть: можно ли гарантировать что в данном коде SELECT INTO newid currval('public.words_id_seq'); вернёт именно id данной добавленной записи (вроде по доке так и должно быть) а не добавленной в паралельном потоке в это же время ? Можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 12:01 |
|
||
|
Транзакции и UNIQUE
|
|||
|---|---|---|---|
|
#18+
golden13ок, понял вроде так должно быть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Единственный вопрос есть: можно ли гарантировать что в данном коде SELECT INTO newid currval('public.words_id_seq'); вернёт именно id данной добавленной записи (вроде по доке так и должно быть) а не добавленной в паралельном потоке в это же время ?Хм. В данном написании строка Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 12:05 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34760823&tid=2005104]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 436ms |

| 0 / 0 |
