Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Есть таблица (Table12) ключ (Id12) которой это ид (Id1, Id2) из других двух таблиц (Table1, Table2). Через курсорадаптер произвожу апдейт (UpdateType = 2, Delete old data and insert new data). Выскакивает ошибка Uniqueness of index "name" is violated ( Error 1884 ). Id12 = (Id1, Id2) - уникальный однозначно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 13:15 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
помеченые на удаление записи также принимаюца во внимание уникальности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 13:22 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Самое интересное, что если делать DELETE/INSERT напрямую из среды, то ошибок не возникает: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 14:30 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
А такое из среды проходит? Код: plaintext 1. 2. Hel!Riser тебе уже написал, что команда DELETE физически не удаляет записи из таблицы, а только помечает их как удаленные. Если по ключевому полю есть индекс Primary или Candidat, то попытка после такого удаления вставить запись с тем же значением и вызовет данное сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 15:15 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:02 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Ну ведь ты поставил UpdateType = 2 - это значит, что при изменении содержимого вспомогательных полей модификация данных пойдет не по UPDATE, а по DELETE+INSERT и вот тут-то id1 будет ОДИНАКОВ. Т.е. ты попытаешся создать запись с тем же id1, который только что удалил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:21 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
И Id1 , и Id2 входят в Primary key таблицы Table12 , получается кортеж (Id1,Id2) . Так как Id2 для каждого INSERT разная, то нарушение целостности не будет при одинаковых Id1. Мне кажется, ошибка где-то в настройках моего курсорадаптера или еще где-то. Можно ли узнать точно какие значение курсорадаптер заности в таблицу во время TABLEUPDATE()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:43 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Это тебе самому надо проверять. Создай табличку из одной записи (или измени только одну запись) и экспериментируй чего ты не задал. Скорее всего, либо не было изменено id1+id2, либо они не включены в список обновляемых полей. Можно узнать с какой целью ты вообще подключаешся к DBF-таблицам через ODBC? А зачем нужен такой экзотический режим как UpdateType = 2 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:58 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Можно узнать с какой целью ты вообще подключаешся к DBF-таблицам через ODBC? NATIVE ВладимирМ А зачем нужен такой экзотический режим как UpdateType = 2 ? Работа со списками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 17:07 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Не понял. Это ты о чем? Вообще, чтобы не было подобных проблем создавай для всех без исключения таблиц собственный суррогатный ключ. Это тебе сейчас кажется, что для однозначной идентификации достаточно id1+id2, но при дальнейшем развитии базы данных может оказаться, что этого уже недостаточно. Лично я ни в коем случае не стал бы совмещать функции. В твоем случае - совмещение Primary и Foreign key. Кое-что по идеологии Primary key можешь почитать здесь http://www.foxclub.ru/kb/index.php?sid=24056&aktion=artikel&rubrik=001&id=6&lang=ru Раздел "Ключевое поле", подраздел "Надо ли использовать ключевое поле во всех без исключения таблицах". Там как раз рассматривается пример таблицы-посредника для связи много-ко-многим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 17:19 |
|
||
|
Update (Delete->Insert) ошибка 1884
|
|||
|---|---|---|---|
|
#18+
Спасибо, ВладимирМ Вы знаете дело все оказалось в том, что курсорадаптер выполняет DELETE/INSERT для каждой записей. Для DELETE все нормально, а вот для INSERT одна и таже команда выполяется несколько раз, как результат - ошибка при втором INSERT. Есть ли режим курсорадаптера, при котором он выполняет один DELETE/INSERT для всех записей разом или надо самому писать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 18:34 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32617686&tid=1596103]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 254ms |
| total: | 422ms |

| 0 / 0 |
