|
|
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Hi многоуважаемый All!!! Вот такая ситуевина (для примера все тривиально): Таблица create table "Centres" ( "CentreId" integer not null, "Name" varchar (256) ); alter table "Centres" add constraint "pkCentre" primary key ("CentreId"); В ней три записи физически расположены: 1 "Rec #1" 3 "Rec #3" 2 "Rec #2" При выполнении: update "Centres" set "CentreId"="CentreId"-1 возникает Violation of PRIMARY or UNIQUE KEY constraint "pkCentre" on table "Centres", т.к. выполняется оператор в порядке физического расположения записей (Причем только на Firebird WI-V 6.2.908 ("самая стабильная версия" www.ibase.ru (c) ;)), на InterBase 6.0.1.0 все Ob ;)) Каким макаром можно отстрочить проверку до окончания выполнения ВСЕГО update? TIA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 11:24 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Попробуй сначала Код: plaintext а потом Код: plaintext но это все против религии!!!!! Еретик!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 11:42 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
то есть второй запрос Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 11:43 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Как из этой ситуевины выкрутиться с подвыпертом - это понятно. Вопрос в том, что ето должно реализовываться самим серваком - ведь update то тривиальный. Да и в SQL92 есть понятие как отстроченные ограничения со всеми вытекающими... Сдается ето ышо одна "национальная особенность", а мо и дыра жар-птицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 11:48 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
изменять суррогатный ключ - это то, что ты сказал, но не жарптицы, а разработчика сори! может, и есть отсроченные проверки, но я про них не знаю.. может, кто-то и знает, подождем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 11:53 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Да меня уже просклоняли на предмет изменения примари кей :( Ну зачем же так сразу шашкой и всех без разбора. Если примари кей составной и в нем фигурирует, 4 example, номер документа, то зачем путать себя и других заводя суррогатный ключ? "...может, и есть отсроченные проверки, но я про них не знаю..." - дядьку Грабера посмотри... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 12:00 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
У тебя наверно получается, что ты пытаешся установить ключ который уже существует. Попробуй все зделать без ключа и посмотри, что получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 16:06 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
писал: У тебя наверно получается, что ты пытаешся установить ключ который уже существует. Ессесно 1 "Rec #1" 1-я запись 3 "Rec #3" 2-я запись 2 "Rec #2" 3-я запись update использует простой перебор записей Поэтому на записи номер 2 имеем: 3-1=2, и 3-я запись еще имеет примари кей 2 - отсюда мы имеем (или нас) Violation of PRIMARY or UNIQUE KEY constraint "pkCentre" on table "Centres". Причем это только под писал: Firebird WI-V 6.2.908, на InterBase 6.0.1.0 все Ob Отсюда следует, что никакого криминала в таком update нет. Просто в FB, происходит проверка ограничений после выполнения update над каждой записью. Отсюда ВОПРОС Каким макаром можно отстрочить проверку до окончания выполнения ВСЕГО update? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2003, 16:32 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Убивай ключ, делай update и создавай ключ заново :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 10:22 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Ты не один - "1+1" (наши поймут) Уже такое посоветовали. Вы думаете я только в этом форуме этот вопрос задал? ;) хи-хи-хи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 10:34 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Вдогонку: дико извиняюсь за ввод в заблуждение на предмет сервака. Данный эхфект имеет место как в IB так и в FB вне зависимости от версии. Как один раз сия фишка выполнилась на IB 6.0.1.0 - ума не приложу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2003, 15:38 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Поборникам девственности, неизменности и незыблемости Первичного Ключа, сверкающего боя, с ногой на небе, живущего, пока не исчезнут РБД посвящается... Эпилог Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 1 1 1 "Rec #1" 1-я запись 2 1 3 "Rec #3" 2-я запись 3 1 2 "Rec #2" 3-я запись Делаем Код: plaintext 1. и ... Violation of PRIMARY or UNIQUE KEY constraint "ukPolis" on table "Polis" Statement: update "Polis" set "PolisNo"="PolisNo"-1 Немая сцена. Занавес. P.S. Надеюсь: изменять UNIQUE KEY это не против религии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2003, 10:07 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
ты знаешь, я с тобой полностью согласен. вот есть у тебя "суррогатный" ключ, и рядом 2 поля с номерами документов, которые ты хочешь чтобы были уникальными. Тебе надо поменять номер документа, а не религиозно-неприкасаемый первичный ключ. И у тебя не получается. Поскольку знатоки не отвечают на вопрос об отложенной проверке целостности (скорее всего ее нет, а есть ли она например в SQL Serverе?), придется тебе выкручиваться. Мой совет умножить на -1, потом еще раз умножить на -1 и вычесть 1. Это ничего не должно сломать, если ты точно знаешь, что нету отрицательных номеров документов! Убивать ключ лучше не надо, имхо. А вобще то опять таки как это у тебя номера полюсов меняются? Это уже против бюрократической религии ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2003, 10:19 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
fedd писал: ...вопрос об отложенной проверке целостности (скорее всего ее нет... Да нет - есть она. Даже есть модификаторы Грабер писал: ... DEFERRABLE - (отстроченные, т.е. выполняемые с отстрочкой) или NOT DEFERRABLE (срочные, т.е. выполняемые сразу. Если определение отсутствует, то по умолчанию используется значение NOT DEFERRABLE... fedd писал: А вобще то опять таки как это у тебя номера полюсов меняются? Это уже против бюрократической религии ;) Наоборот. 4 example: Юзверь вводит договор N5. К нему присовокупляет пять полисов, соответственно с номерами 1, 2, 3, 4, 5. И тут видит, что полис N 3 ему не нужон. Он его удаляет. Ессесно полис N 4 должен стать полисом N 3, а полис N 5 - N 4. А иначе, согласись, у любого нормального человека вызовет недоумение фраза в договоре (шо то типа такого): "... полисы N 1, 2, 4, 5" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2003, 12:38 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
Могу что-нибудь нехорошее ляпнуть... Но, если необходимо изменить значения первичного ключа у всех записей (в этом случае гарантируется "отложенная проверка" при прочих реляц. условиях...), то можно все сделать в ХП перебирая записи от мин. до макс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 09:21 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
...Ессесно полис N 4 должен стать полисом N 3, а полис N 5 - N 4... Я в таких случаях сдвиг номеров реализую програмно - ХП/триггер, причем номера полисов не включаю в ключи. Если не ошибаюсь, то включение полезной информации в прймари кей есть ошибкой, согласно теории БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 12:48 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
у него теперь не в паймари ки входит, а в юник. номер полюсов в договоре по смыслу должны быть уникальны, почему бы не заставить сервер следить за целостностью. я бы предложил, если мы уж залезли в дебри предметной области, давать полюсам неупорядоченные номера, чтобы не вызывало вопросов отсутствие "полиса №3". О! или нумеровать полисы не в каждом договоре заново, а сквозно вобще по базе. подогнать, так сказать, техзадание под технологию...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2003, 22:41 |
|
||
|
Violation of PRIMARY or UNIQUE KEY constraint при update
|
|||
|---|---|---|---|
|
#18+
2 fedd Согласен во всем. Более того, не уверен, что изменение номеров полисов (юрид.документов) - это то, что нужно заказчику. Хотя это зависит от места... Думаю, что тип ограничения/ключа роли не играет. Смысл слежения за целостностью как раз и заключается в генерации ошибки при попытке ее нарушения. Всегда и везде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 10:06 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32209344&tid=1580213]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 462ms |

| 0 / 0 |
